В какой момент подвиды 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 называется. Таким образом, вам не нужно беспокоиться о том, выложены ли взгляды или нет.

Другие вопросы по тегам