美文网首页
iOS10 View的frame的坑

iOS10 View的frame的坑

作者: 我叫阿水 | 来源:发表于2016-09-21 13:14 被阅读1185次

    前几天手机更新了iOS10的系统,也把Xcode更新到了8,解决了一些适配的问题,项目正常地跑起来就没去管。
    今天早上偶然打开一个之前比较少用的界面,发现界面计算的高度全乱了,瞬间就懵了。。
    PS:这个问题只是出现在用xib或sb搭的界面

    不一样的frame

    iOS10 之前, 我们在xib文件中拖好控件,设置好约束,拉出控件IBOutlet属性,然后通常就会在viewDidLoad或者viewWillAppear做一些设置跟赋值,甚至碰到一些高度动态的界面,通常也会拉出约束属性,根据控件的frame,然后手动计算constant来计算该页面的实际高度等等操作,这些都能达到我们想要的效果。

    但是在iOS 10中,这些似乎都不能正常的执行,原因就是frame的改变。默认情况下,系统会把控件初始化为{0,0,1000,1000},即使你在xib里面设置好位置跟宽高。因此你会发现,在viewDidLoad或者viewWillAppear中一旦使用xxx.frame.size.height或者xxx.frame.origin.y,都会得到1000或者0

    Paste_Image.png

    解决方法

    其实解决方法很简单,就是把你在viewDidLoad里面使用到frame计算或者设置圆角啊什么的代码,用一个私有方法包装起来,例如:- (void)viewDidCalculateInitialFrame 然后

    - (void)viewDidLayoutSubviews {
        [super viewDidLayoutSubviews];
        [self viewDidCalculateInitialFrame];
    }
    

    之后你会发现,一切又回归正常了!

    相关文章

      网友评论

          本文标题:iOS10 View的frame的坑

          本文链接:https://www.haomeiwen.com/subject/xglaettx.html