我有一个UITabBar
应用程序,其中嵌入了UINavigation
用于某些视图。在一个特定的导航视图中,我显示图形/图表,最好在landscape
中显示它们,就像iPhone向左或向右旋转一样。该应用程序的其余部分更适合肖像。因此,无论用户如何物理旋转设备,我都希望“强制”包含图形的视图加载到横向中。我试过了:
#pragma mark - Rotation
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
但这似乎对视图没有任何作用。如果我为目标选择“支持的界面方向”中的“横向左侧”图标,则它允许整个应用程序重新定向设备的旋转。有没有办法以纵向方式锁定我的所有普通视图的应用程序,并锁定包含图形的视图,以便应用程序忽略实际的设备方向?
答案 0 :(得分:1)
你是对的。在标签栏应用程序中,它不是被调用的各个视图控制器的shouldAutorotateToInterfaceOrientation
:方法。仅调用选项卡栏控制器shouldAutorotateToInterfaceOrientation
以确定是否以及如何定向视图。
但是,各个视图控制器无论如何都应该相应地实现shouldAutorotateToInterfaceOrientation
。当推或拉视图控制器时,这些方法仍用于确定动画效果的方向。
我自己从未尝试过以下内容:您可以尝试对标签栏控制器进行子类化并相应地响应shouldAutorotateToInterfaceOrientation
,具体取决于当前向用户显示的视图。 但我担心Apple有充分的理由强迫我们在标签栏应用中支持所有观点的相同方向。
答案 1 :(得分:0)
尝试在横向模式中需要的特定ViewController
:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight );
}
答案 2 :(得分:0)
首先我使用的是iOS 6 SDK。
我正在使用自定义TabBar控制器。 并通过以下代码集控制TabBar控制器的方向
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// You do not need this method if you are not supporting earlier iOS Versions
return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
- (NSUInteger)supportedInterfaceOrientations
{
return [self.selectedViewController supportedInterfaceOrientations];
}
- (BOOL)shouldAutorotate
{
return YES;
}
视图控制器应该包含
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return UIInterfaceOrientationIsLandscape(orientation);
}
这就是我所做的,并且能够将视图锁定为横向或纵向(在我的情况下)。要强制,您可以设置警报视图,说明用户将设备转为横向并向他显示图表。只是一个建议。