hpi*_*que 5 iphone viewdidload ipad ios autoresizingmask
什么时候可以知道UIViewController视图的确切大小?
我有一个多行,UILabel其帧取决于其文本和父视图的宽度.考虑到我需要放置其他视图下面的UILabel,它做它的框架盖文的准确的空间是很重要的.
我目前正在计算这样的大小viewDidLoad:
labelSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(self.view.frame.size.width, MAX_HEIGHT)];
Run Code Online (Sandbox Code Playgroud)
问题是当父视图UIViewController用作模态表单或弹出框时,父视图的宽度会发生变化.如果我使用autoresizingMaskUILabel的框架进行相应的调整,但它不再适合文本.
UILabel知道UIViewController's视图的确切大小,我在哪里可以计算出这个框架?
这是在显示UIViewController模态表单(UIModalPresentationFormSheet)时打印self.view.frame的结果.
viewDidLoad: (0.000000;0.000000;320.000000;480.000000)
viewWillAppear: (0.000000;0.000000;768.000000;960.000000)
afterDelay: (0.000000;0.000000;540.000000;576.000000)
Run Code Online (Sandbox Code Playgroud)
产生上述输出的代码:
- (void)viewDidLoad {
[super viewDidLoad];
[Utils logFrame:self.view.frame tag:@"viewDidLoad"];
}
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[Utils logFrame:self.view.frame tag:@"viewWillAppear"];
[self performSelector:@selector(afterDelay) withObject:nil afterDelay:0.1];
}
- (void) afterDelay {
[Utils logFrame:self.view.frame tag:@"afterDelay"];
}
Run Code Online (Sandbox Code Playgroud)
那是因为你的 UIViewController 的根视图正在使用 autoresizingMask。我不认为有一个“完美的时机”来检测 UIViewController 的根视图的大小,除非您重写根视图的“layoutSubviews”方法。
如果您不希望视图自动调整大小,请不要使用自动调整大小并自行设置大小,它将始终与您期望的大小相同。
如果您不确定您的根视图使用哪种 autoresizingMasks,NSLog 是您的朋友。
| 归档时间: |
|
| 查看次数: |
3292 次 |
| 最近记录: |