Когда можно узнать точный размер вида UIViewController
?
Проблема
У меня есть многострочная UILabel
, чья рамка зависит от текста и ширины родительского представления. Учитывая, что мне нужно расположить другие виды ниже UILabel
, важно, чтобы его рамка точно соответствовала пространству текста.
В настоящее время я вычисляю размер как этот на viewDidLoad
:
labelSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(self.view.frame.size.width, MAX_HEIGHT)];
Проблема в том, что ширина родительского представления изменяется, когда UIViewController
используется в качестве модальной таблицы или всплывающего окна. Если я использую autoresizingMask
, то рамка UILabel корректируется соответствующим образом, но она больше не подходит для текста.
Где я могу вычислить кадр этого UILabel
, зная точный размер UIViewController's
вида?
Усилия по отладке
Это результат печати self.view.frame при отображении UIViewController
в виде листа модальной формы (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"];
}