我想创建一个同时支持横向和纵向方向但不能在它们之间旋转的视图控制器-也就是说,视图应保留其原始方向。

我尝试创建一个ivar initialOrientation并将其设置在-viewDidAppear

initialOrientation = self.interfaceOrientation;


然后

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == initialOrientation);
}


但这会引起混乱的问题(大概是因为-shouldAutorotateToInterfaceOrientation-viewDidAppear之前被调用)。

如何将方向锁定为其原始方向?

最佳答案

我猜我走在正确的轨道上。我通过将initialOrientation设置为属性,然后从调用viewController进行设置来解决了这个问题:

OrientationLockedViewController *vc = [[OrientationLockedViewController alloc] init];
vc.initialOrientation = self.interfaceOrientation;


现在我在OrientationLockedViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == self.initialOrientation);
}

07-24 18:39