1、自定义键盘去除iPad上方的工具栏
1 | import Foundation |
2、推送播放自定义声音设置以及注意事项
3、UIView的重绘及布局刷新,触发刷新事件
https://www.jianshu.com/p/e9ca7dfb5d72
4、iOS UIWebView 和 WKWebView 的 cookie 获取,设置,删除
https://my.oschina.net/u/4391811/blog/3252616
5、NSUserDefaults存储失败原因及解析
https://blog.csdn.net/Ado_add/article/details/75298990
6、iOS 获取状态栏、导航栏、tabBar高度
https://www.jianshu.com/p/507c89d456e1
7、Swift4.2及以上版本 新特性详解 Hashable 和 Hasher
https://www.jianshu.com/p/0b688dd4c67c
8、Swift 延迟执行dispatch_after
1 | DispatchQueue.main.asyncAfter(deadline: .now()+0.5, execute: |
9、iOS-模拟器全屏(Simulator Fullscreen)
iOS中模拟器支持分屏功能,只需要简单的一行命令:
1 | defaults write com.apple.iphonesimulator AllowFullscreenMode -bool YES |
Fullscreen Xcode and Simulator
10、ld: framework not found Xcode编译报错
出现这种原因是Link Binary With Libraries还存在某些包的.a文件的引用删除即可。
11、UIImage显示原始颜色或渲染成任意颜色
UIImage的对象有一个方法:imageWithRenderingMode:可以修改图片的渲染模式,其参数是一个枚举值,分别是:
1 | UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。 |
一般导航栏上的图片会根据导航栏的TintColor渲染成统一的颜色,这样即使导航栏的颜色不同,也可以使用同一套切图。
如果我们希望图片始终显示成原来的原色,在设置的时候,我们把渲染模式改成UIImageRenderingModeAlwaysOriginal即可。
1 | UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 20, 30, 44)]; |
12、NotificaitonCenter 发出通知的问题
NotificationCenter.default.post 发出具体的通知事件之后,我们需要关注和注意以下几点:
- 当前发出通知的所处的线程(主线程/子线程)
- 添加Observer的位置,接收到通知之后,刷新UI代码一定要在
main-thread
进行中
NotificationCenterde 特点可以总结为:在哪个线程发出通知,接收方会在发出通知的线程中处理通知。所以涉及到 UI 刷新的问题,一定要将该部分业务代码放置在 主线程 中。
13、Swift 只执行一次的代码
声明仅执行一次:
1 | lazy var onceCode: Void = { [weak self] in |
14、Pod install --repo-update --verbose
大面积报错
安装之后出现一些类库开始大面积报错,主要原因就是安装的 pods
类库在多次代码变更合并等操作造成在主工程记录中丢失、hash值变化,都会导致版本安装不一致而造成看是安装了但是一直报错的问题。
具体如下图所示:
1 | lazy var onceCode: Void = { [weak self] in |