UIPopoverViewController медленно добавляет вложенные представления

#uikit #uipopovercontroller

#uikit #uipopovercontroller — контроллер

Вопрос:

У меня есть UIPopoverViewController, который правильно отображает пользовательский UIViewController. Когда я нажимаю кнопку, у меня выполняется действие, и в результате я добавляю представление в иерархию представлений представления UIViewController.

Проблема в том, что это происходит очень медленно, и для появления представления требуется несколько секунд. Я не делаю ничего необычного с кодом моего UIViewController.

 - (void)showAccountChooser {
    self.twitterAccountPicker = [TwitterAccountPicker new];
    [self.view addSubview:self.twitterAccountPicker.view];
    self.twitterAccountPicker.view.frame = self.view.bounds;

    self.twitterAccountPicker.view.transform = CGAffineTransformMakeScale(.05, .05);

    [UIView animateWithDuration:0.5f animations:^{
        self.twitterAccountPicker.view.transform = CGAffineTransformMakeScale(1, 1);
    } completion:^(BOOL finished) {
        //[self.twitterAccountPicker viewDidAppear:YES];
    }];
}
 

Добавляемый мной UIViewController тривиален и не требует тяжелой обработки в viewDidLoad или viewWill / didAppear. Я установил точки останова и убедился, что он не делает ничего плохого.

Кто-нибудь еще заметил это при добавлении представлений?

Ответ №1:

После установки точек останова, пытаясь отладить это, я понял, что мой showAccountChooser метод вызывался из блочного вызова, который происходил в фоновом потоке. Перемещение этого вызова в основной поток решило проблему.