苹果开发 笔记(62)edgesForExtendedLayout

这几天就为IOS 6 和IOS 7 历史问题进行学习,经过查阅资料和同学帮助下,对这个玩意有了点体会。当时一直纠结NavigationBar 和 状态栏的高度问题。经过查询recursiveDescription 方法 打印了信息后。 在有导航栏的情况下,发现IOS 6 的view会移至在导航栏下,在IOS 7 全屏 则不会在导航栏下,你会发现诡异,其实在IOS7 修改了view的位置。所以官方API提供了 edgesForExtendedLayout 属性,只需要设置该属性为UIRectEdgeNone。IOS 7 显示情况一下 又可以恢复了之前的IOS6的情况,整体会偏移到导航栏下面,不会发生遮挡问题。这样一来就不用费心去算高度。折腾好一段时间,我想想学习这个过程,多多少少会因为历史的缘故,要对其了解才能深刻一些。
虚心学习-> 大胆猜测 ->小心求证->归纳总结

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])  
{  
     self.edgesForExtendedLayout = UIRectEdgeNone;  
 }  

点击进入这个类查询后会发现在UIViewController.h,这个方法活跃在ios7 后 ,默认值是 UIRectEdgeAll 边界全部扩展 全屏化

@property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll

有了两个方法,可以在xib 文件或者storyboard 里面对UILabel 的文本进行适配化了。有个问题是在IOS6 下 会出现文本高度展不开的情况,即使设置numberOfLines =0 。所以依然要对UILabel其进行高度的设置。

同时也要 好好留意topLayoutGuide 和bottomLayoutGuide 这两个属性,有助于帮助我们去解决适配的问题。

你可能感兴趣的:(苹果开发 笔记(62)edgesForExtendedLayout)