我有以下设置
- XIB 文件只有横向视图。此视图连接到我的控制器
- 此视图上有一个标签连接到
IBOutlet UILabel* label
- 这个标签是这样配置的(它占据了屏幕的整个宽度)。
- 我重写了 viewWillAppear 并执行此操作(以获取标签的大小)。
-(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; CGRect rect = _labelTitleLand.frame; }
奇怪的事情(我不明白)。它在纵向启动时(在 iPad 上)返回 size = (width 768, height 21),这是正确的。
它在横向启动时返回 size = (width 741 height 21)。这很奇怪。我预计它将返回宽度 1024,高度 21 用于横向。
我的印象是,在 viewWillAppear 的那一刻,所有控件的大小都已经计算过了。
更新 1
如果我在 viewDidAppear 上检查 labelTitleLand.frame,那么它会返回正确的结果。但是,我不喜欢这样,因为我想做一些影响视图绘制方式的动作(基于这个大小)。在这种情况下,如果我将在 viewDidAppear 上执行此操作,据我所知,将会有可见的重绘。