【发布时间】:2013-08-05 23:11:38
【问题描述】:
我有以下设置
- 只有横向视图的 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 上执行此操作,据我所知,将会有可见的重绘。
【问题讨论】:
-
试试 _labelTitleLand.bounds 看看是否可行。
-
@rdelmar:返回相同的结果