我想创建一个支持横向和纵向方向的视图控制器,但不能在它们之间旋转 - 也就是说,视图应保持其原始方向。
我尝试创建一个ivar initialOrientation
并在-viewDidAppear
中设置
initialOrientation = self.interfaceOrientation;
然后
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == initialOrientation);
}
但这会导致令人困惑的问题(可能是因为-shouldAutorotateToInterfaceOrientation
之前调用-viewDidAppear
)。
如何将方向锁定到原始方向?
答案 0 :(得分:1)
initialOrientation
属性,然后从调用viewController:设置它来解决这个问题
OrientationLockedViewController *vc = [[OrientationLockedViewController alloc] init];
vc.initialOrientation = self.interfaceOrientation;
现在我在OrientationLockedViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == self.initialOrientation);
}
答案 1 :(得分:0)
这有点奇怪的要求,而不是我认为UIKit旨在处理的东西。当UIKit调用-shouldAutorotateToInterfaceOrientation
或者它可以缓存这些结果时,我不会认为它有记录,所以如果这种行为很重要,我会看到两种可能性。
提前设置initialOrientiation
,如果不提前启动视图控制器,那么-shouldAutorotateToInterfaceOrientation
行为永远不会改变,但应用会尊重它开始的方向。
在显示此控制器的视图之前检测设备方向,并自行应用视图的旋转变换。根据您的视图控制器层次结构,您可能需要宣传支持所有旋转以允许设备旋转,然后在视图上设置变换以始终旋转到相同的方向,而不管设备的方向如何。