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中
这与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中
相关文章推荐
- iOS中延时执行的几种方式的比较和汇总
- 2015.12.17 初识OC&iOS 类和对象
- 查看iOS Crash logs的方法(程序崩溃)
- iOS 页面组织 显示规则
- 仿IOS7日期选择控件(新)
- 仿IOS7日期选择控件(新)
- iOS史上最全界面跳转传值总结及分析-包括属性传值、代理传值、通知传值、单例传值、代码块传值
- iOS常用基础框架和第三方类库
- iOS重新定义系统自带的方法,如 重定义 CGRectMake 和 CGPointMake 可以解决屏幕适配的问题
- iOS FFmpeg实时YUV420P编码H264
- iOS开发解决json串中的NSNull类型
- dYSM分析崩溃日志
- 学iOS,看这里!参考资料及视频代码
- 《IOS视频录制,本地视频播放,剪切,合并》系列(1)本地视频播放
- iOS block使用注意事项
- [IOS]将CGPoint、CGSize、CGRect等放进数组的方法
- >02 (协议代理)、自定义视图、程序执行顺序(iOS程序启动流程 )、视图控制器、(MVC的理解)
- iOS性能调优之Analyze静态分析
- iOS对金额千分位显示的问题
- ios开发同一个lab显示不同的颜色