ViewDidLoad和ViewDidAppear两个方法中的self.view.frame不同?

 

setFrame 的方法一定要放在 viewDidAppear 里,在 viewDidLoad 里是没有效果的。因为 viewDidLoad 的时候, view 还没有加载完成。

使用 AutoLayout+SizeClasses 的模式开发,在viewDidLoad 中视图的最终frame是没有确定的,你可以试试在ViewDidLoad分别调用 [self layoutIfNeeded] 和 [ScrollView layoutIfNeeded] 然后看看frame,如果是只是适配iPhone 竖屏,我建议你不要用 SizeClasses 具体看 博客

 

调用方法viewDidLoad中,所有的控件的frame都是在当前storyboard中状态,然后viewdidlayoutsubview,应该是这个方法。这个会根据你在界面上所设定的约束开始调整各个view,如果没有约束,那应该还有automask什么的,会根据不同的设备尺寸自动调整frame。然后再是viewwillappeare方法。你可以自己去重写下viewdidlayoutsubview,然后在里面看看self.view.frame会有什么变化。

 

这个问题很早就有了,不是iOS8的问题。
view的几何属性,在viewDidLayoutsubview中取比较合适。

 

要改变controller的view的frame,可以在viewwilllayoutsubviews里面修改。在viewdidload,viewwillappear,viewdidappear修改都不会改变constroller view的大小。

 

https://segmentfault.com/q/1010000003072324

http://blog.csdn.net/u013820207/article/details/33293127

转载于:https://my.oschina.net/360yg/blog/1544602

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值