UIViewController
のビューの正確なサイズを知ることができるのはいつですか?
問題
UILabel
フレームがテキストと親ビューの幅に依存する複数行があります。他のビューをの下に配置する必要があることを考えるとUILabel
、そのフレームがテキストのスペースを正確にカバーするようにすることが重要です。
私は現在、次のようにサイズを計算していますviewDidLoad
:
labelSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(self.view.frame.size.width, MAX_HEIGHT)];
UIViewController
問題は、をモーダルフォームシートまたはポップオーバーとして使用すると、親ビューの幅が変わることです。UILabelのフレームを使用autoresizingMask
すると、それに応じて調整されますが、テキストに完全に適合しなくなります。
UILabel
ビューの正確なサイズを知っているこのフレームはどこで計算できUIViewController's
ますか?
デバッグの取り組み
UIViewController
これは、モーダルフォームシート()として表示するときにself.view.frameを印刷した結果ですUIModalPresentationFormSheet
。
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)
上記の出力を生成するコード:
- (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"];
}