База UIViewController имеет границы портретной ориентации вместо альбомной - почему?

Все мои ViewController классы наследуются от MyBaseViewController который имеет обычай viewDidLoad метод:

- (void)viewDidLoad {
    int x = self.view.bounds.size.width / 2;
    int y = self.view.bounds.size.height / 2;

    self.spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(x, y, 50, 50)];
    self.spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;

    [self.view addSubview:self.spinner];

    [self.spinner startAnimating];
}

Каждый дочерний класс звонит [super viewDidLoad] в своем собственном viewDidLoad метод. Однако счетчик всегда "центрирован", как будто устройство находится в портретном режиме, а не в горизонтальном, и приложение заблокировано в ландшафтном режиме, как вы можете видеть здесь:

Почему это?

1 ответ

Последовательность вызова методов контроллера представления, как показано ниже:

1) viewDidLoad 2) viewWillAppear 3) viewDidAppear

BaseviewController как родительский класс в вашем случае. Когда дочерний класс загружается, он вызывает метод ориентации вашего дочернего класса. Вам нужно вызвать метод viewcontroller базового класса после вызова метода ориентации дочернего класса.

Пожалуйста, проверьте ваш метод ориентации вызывать или нет. Так что индикатор активности покажет середину экрана.

Также старайтесь избегать написания кода ориентации в методе viewDidLoad. Пожалуйста, добавьте свой код в метод viewWillAppear или viewDidAppear.

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