В какой момент подвиды UIViewController определенно выложены изначально?
У меня есть много мест в моем коде, где мне нужно делать вещи, основанные на макете представлений в UIViewController
, Например, у меня есть представление в кончике, которое я затем записываю в коде и использую для создания маски для другого слоя, но мне нужно подождать, пока представление маски и его подпредставления не получат правильный размер, прежде чем я это сделаю.
Я обнаружил, что, хотя и хакерский, я могу добиться этого, создав счетчик, который увеличивается каждый раз viewDidLayoutSubviews
вызывается и запускает код, который я хочу выполнить, когда он вызывается во второй раз - по какой-то причине большинство представлений еще не выстроены должным образом до viewDidLayoutSubviews
вызывается во второй раз.
Как я уже сказал, это выглядит довольно странно, и есть все шансы, что обновление iOS может сломать мой код. У кого-нибудь есть лучший способ сделать это?
- (void)viewDidLoad
{
[super viewDidLoad];
self.layoutCount = 0;
}
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.layoutCount ++;
if (self.layoutCount == 2)
{
// perform final layout code, e.g. create masks
}
}
1 ответ
Самым безопасным подходом может быть "обновление" масок каждый раз viewDidLayoutSubviews
называется. Таким образом, вам не нужно беспокоиться о том, выложены ли взгляды или нет.