最近要换地方工作了,整理下之前遇到的问题。
1、StatusBar
View controller-based status bar appearance
状态栏属性设置后,plist修改后才有效。
2、Auto Layout
Hugging priority 确定view有多大的优先级阻止自己变大。
Compression Resistance priority确定有多大的优先级阻止自己变小。
简单来说,Hugging的收缩的意思,就是当有A,B两个元素连在一起,当他们的superView变大的时候(A 和 B也要变大),哪个有更大的优先级保持原来的大小;
Compression Resistance 是压缩阻力的意思,就是A、B两个元素连在一起,当他们的superView变小的时候(A和B也要变小),哪个有更大的优先级保持原来大小;
3、modal半透明页面
弹出一个半透明的viewController:
在ib设置被弹出的展示方式:OverCurrentContext
然后再调用 presentViewController即可。
4、Xcode7 卡顿问题
Source Control 里面的 Automatically 全部关掉 ;
设置 >> 通用 >> 最近使用项目 (改成0) / 允许在这台 Mac 和 iCloud 设备之间使用 Handoff (关掉);
5、viewController生命周期
disappear 里面做一些取消监听的操作时,要考虑到Modal一个viewController的时候,会调用disappear;
同时在navigationController poptoroot的时候,中间的一些VC不会调用disappear。
6、ReactiveCocoa
RAC是基于KVO的,而NSMutableArray并不会在调用addObject或removeObject时发送通知;解决方案可以通过NSArray来解决;
与此类似,Textfield的text如果是代码设置值,不会触发信号。
view.frame 不参与KVO,bounds可以。
7、Cell 自适应
当实用UITableViewCell 的自动延伸时候,cell会自动添加一个height的约束。(可以把某个view 的height改成pro = 750,不会有warning)
一个类似微信朋友圈添加图片的功能(UICollectionView实现,通过修改constraint高度,让view自适应)。当添加一个图片的时候,
如果是放在UIViewController里面,修改constraint 的值,会导致view重新layout。
如果是放在UItableviewCell 里面的,修改constrant的值,会导致cell的重新layout,但是不会导致tableview layout。需要在cell调用一次layoutIfneed。
8、架构
MVC 和 MVVM 的关于网络层的区别:
MVC里面的Model可以做成单例,Message 可以独立出去,通过单例回调Model。model通过notify通知controller。
MVVM里面的model,不是单例,同时与controller的状态绑定,message集成在ViewModel里面。
9、AFNetworking
constructingBodyWithBlock
AFNetworking upload的时候才用这个参数
如果是普通的post,不能带有这个参数。
(对于不同的任务,AFNetworking会生成不同的task)
10、ReactiveCocoa 与 UI显示
RACOberserver 用于变动的内容;
如果是用户操作,发送协议,协议回来更新的,可以用subscribenext,在next中刷新显示;
flattenMap 不透传completed,里面的信号完成了只是外面的信号的开始,外面的信号完成了才有completed
text_signal 一般用next 不用completed
11、UISearchController
if the UISearchController
is deallocated before its view is loaded, this warning will appear.
在用搜索的时候产生warning,那么下面的函数可以解决。
- (void)dealloc {
[self.mySearchController.view removeFromSuperview];
}
12、视图切换
视图A modal 视图M 之后,如果要在modal dismiss跳转,记得延迟到下一个runloop(或者直接延迟0.1s)
13、objective-c
A继承B,A重写了B的方法test,那么当A 调用 test是A之后的方法。
在super 中,self还是A,调用的还是A的test。