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

时间:2014-03-06 19:46:20

标签: ios objective-c uiviewcontroller interface-orientation

我的所有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。但是,微调器总是“居中”,就像设备处于纵向模式而不是横向模式一样,应用程序被锁定为横向模式,如下所示:

enter image description here

为什么会这样?

1 个答案:

答案 0 :(得分:0)

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

1)viewDidLoad 2)viewWillAppear 3)viewDidAppear

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

请检查您的定向方法是否被调用。 因此,活动指示器将显示在屏幕中间。

还要尽量避免在viewDidLoad方法中编写方向代码。请在viewWillAppear或viewDidAppear方法中添加您的代码。