База 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.