iOS storyboard 用代码修改frame问题

在iOS项目中使用storyboard布局界面,如果启用了Autolayout,sizeclass在viewDidLoad修改frame值是看不到效果的

这与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有值的情况下才有效

你可能感兴趣的:(iOS storyboard 用代码修改frame问题)