我有以下设置
IBOutlet UILabel* label
Run Code Online (Sandbox Code Playgroud)-(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; CGRect rect = _labelTitleLand.frame; }
奇怪的事情(我不明白).它以纵向(在iPad上)启动时返回size =(宽度768,高度21),这是正确的.
它在横向启动时返回size =(宽度741高度21).这很奇怪.我预计它将返回宽度1024,高度为21的景观.
我的印象是,在viewWillAppear的那一刻,所有控件尺寸都已经计算好了.
更新1
如果我在viewDidAppear上检查labelTitleLand.frame,那么它会返回正确的结果.但是,我不喜欢这个,因为我想做一些影响视图绘制的动作(基于这个大小).在这种情况下,如果我将在viewDidAppear上执行此操作,据我所知,将会有可见的重绘.
在获得实际的最终帧之前,必须完成视图层次结构的布局.
因此,您应该检查框架viewDidLayoutSubviews,该框架仍将在实际绘制视图层次结构之前.如果您需要在此处进行更改,则可以不进行任何重绘.
viewWillAppear 太早了,因为这是在您的自动调整遮罩(和/或自动布局约束)产生影响之前.
| 归档时间: |
|
| 查看次数: |
1378 次 |
| 最近记录: |