Ios 基本UIViewController具有纵向方向边界而不是横向-为什么?

Ios 基本UIViewController具有纵向方向边界而不是横向-为什么?,ios,objective-c,uiviewcontroller,interface-orientation,Ios,Objective C,Uiviewcontroller,Interface Orientation,所有myViewController类都继承自具有自定义viewDidLoad方法的MyBaseViewController: - (void)viewDidLoad { int x = self.view.bounds.size.width / 2; int y = self.view.bounds.size.height / 2; self.spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRect

所有my
ViewController
类都继承自具有自定义
viewDidLoad
方法的MyBaseViewController:

- (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];
}
每个子类在其自己的
viewDidLoad
方法中调用
[super viewDidLoad]
。但是,微调器始终“居中”,就好像设备处于纵向模式,而不是横向模式,并且应用程序锁定为横向模式,如您在此处所见:


这是为什么?

视图控制器方法的调用顺序如下:-

1) viewDidLoad 2) 视图将出现 3) 视图显示

在您的案例中,将BaseviewController作为父类。当加载子类时,它将调用子类定向方法。一旦调用了子类定向方法,就需要调用基类viewcontroller方法

请检查您的定位方法是否被调用。 所以活动指示器将显示在屏幕中间


还应尽量避免在viewDidLoad方法中编写方向代码。请在ViewWillDisplay或ViewDidDisplay方法中添加您的代码。

为什么不调用
[super viewDidLoad]?应该是的。是的,确实是一个副本。这里的答案是简单的,金色的,非常101。问题是我在
viewDidLoad
期间调用了一个web服务,并且想要显示一个活动指示器。是的。因为您的视图未显示,并且您在viewDidLoad中编写了代码。一旦视图出现,您就必须显示活动指示器,以显示正确的输出。