北风网 iOS 面试题库(六)
写在前面:“分享”看似在输出,但实际上是获得更多。用我们北风网的口号就是“不懂得
分享的人,不会很快乐;不懂得分享的网站,不是好网站”。所以,我们北风网不定期会给
大家分享一些干货,所有的内容仅供学习之用,也希望大家能将“分享的精神”传递下去。
一、iOS7 和 iOS7 以下常见的兼容性问题和解决方法?
1
、baseline
(1)原因: autolayout 自动加了 baseline 的 constraints,而 baseline 只有 iOS8 以后才有,兼
容 iOS7 就崩溃了.
(2)解决:直接移除 baseline 相关的 constraint 即可。
2
、[[UINavigationBar appearance] setTranslucent:NO]
(1)原因: iOS 8.0 之后[UINavigationBar appearance]才可以 setTranslucent,兼容 iOS7 需要添
加判断。
(2)解决:兼容 iOS7 需要添加判断:
if(IOS8_OR_LATER && [UINavigationBar
conformsToProtocol:@protocol(UIAppearanceContainer)]) {
[[UINavigationBar appearance] setTranslucent:NO];
}
3
、storyboard segue show
(1)原因: 在 iOS7 下如果没有设置 navigationController 为 initController,show 会自动将
push
转换成 modal。简而言之就是在 sb 里每个 show 的 segue 。
(2)解决:保证它的初始位置有个 navigationController。
4
、scrollerView
(1)原因:找不到 setAutomaticallyAdjustsScrollViewInsets: 方法
(2)解决:重写方法 setAutomaticallyAdjustsScrollViewInsets:
5
、constrain to margin
(1)原因:这是设置了 constrain to margins 的关系,这玩意也是 iOS8 后才有的,属于默认
设置,如果点了 constrain to margins,左右会有 8 个点的空挡,从 8 个点后开始计算约束,