当iphone改变方向并且工作正常时,我有一个UITabBar开关位置,但我希望第一个标签视图中的控件保持静止,而不管手机的位置如何。 我觉得我错过了一些明显的东西?
编辑: 基本上,控件始终是横向的,但是标签栏必须切换方向。这有可能吗?
答案 0 :(得分:1)
对于您不希望控件重新调整的视图,请禁用自动调整大小:[self.view setAutoresizesSubviews:NO];
。这将阻止所有控件(子视图)响应界面方向更改,但选项卡仍将响应。您可能还必须设置当前视图的autoresizingMask:[self.view setAutoresizingMask:UIViewAutoresizingNone];
添加:对于您不想旋转的所有控件,请尝试以下操作
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
switch (toInterfaceOrientation) {
case UIInterfaceOrientationLandscapeLeft:
label.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress
break;
case UIInterfaceOrientationLandscapeRight:
label.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); // 270 degrees
break;
case UIInterfaceOrientationPortraitUpsideDown:
label.transform = CGAffineTransformMakeRotation(M_PI); // 180 degrees
break;
default:
label.transform = CGAffineTransformMakeRotation(0.0);
break;
}
}
答案 1 :(得分:0)
景观的例子
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
OR
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscape);
}
答案 2 :(得分:0)
不幸的是,这并不简单。在没有内容视图控制器响应的情况下,您不能让UITabBarController响应接口更改。
但有一种方法可以做到这一点。在内容视图控制器的willAnimateRotationToInterfaceOrientation:duration:
中,您可以将相反的旋转(使用transform
属性)应用于您不想旋转的子视图。例如,UIInterfaceOrientationLandscapeLeft是顺时针旋转90°,因此如果对视图transform
应用90°逆时针旋转,它似乎没有旋转。
如果需要,可以在UIView中包含内容视图控制器的整个界面,这样您就必须反转(并可能调整大小)一个视图。我不知道在视图控制器的主视图上应用反循环是否有效,系统可能会覆盖您对该特定视图的设置。