iOS storyboard 用代码修改frame问题

本文详细解析了在iOS项目中使用storyboard与Autolayout时遇到的问题:在不同生命周期方法中修改frame值的有效性。文章指出awakeFromNib、viewDidLoad等方法中修改frame不可见的原因,并给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值