您的位置:首页 > 移动开发 > IOS开发

iOS storyboard 修改frame问题

2015-12-17 18:26 477 查看
在iOS项目中使用storyboard 布局界面,如果启用了AutoLayout, sizeClass 在viewDidLoad修改frame值是看不到效果的(iOS7以前好像可以)

这与iOS的生命周期有关

- (void)awakeFromNib;
- (void)viewDidLoad;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewDidLayoutSubviews;

awakeFromNib 在创建ViewController之前调用

viewDidLoad 此时ViewController已经创建完成,这里可以做一些配置,view的bounds属性还没有值,所以在这里修改frame看不到效果

viewWillAppear 这里bounds已经有值了,这里不能做一些耗时操作,否则会引起app崩溃

viewDidAppear 这视图已经可见了

答案就是在 viewDidLayoutSubviews 方法中修改frame 可以达到预期效果
这个方法调用在viewWillAppear , viewDidAppear之间,因为frame值的修改必须在bounds有值的情况下才有效

所以修改frame不能在viewDidLoad中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: