在横向模式下没有正确查看

时间:2012-03-12 12:58:43

标签: iphone uiview landscape-portrait

我成功地以纵向模式查看应用程序。问题是什么,当我在风景中看它时,它似乎不合适。我已经实现了这段代码。

if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft)
{
    return interfaceOrientation=UIInterfaceOrientationLandscapeLeft;
}
else if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight)
{
    return interfaceOrientation=UIInterfaceOrientationLandscapeRight;
}
else if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait)
{
   return interfaceOrientation=UIInterfaceOrientationPortrait;
}   

我应该做些额外的事吗?这段代码对我有用吗?

1 个答案:

答案 0 :(得分:1)

如果您想支持所有可能的方向,请将shouldAutorotateToInterfaceOrientation:的实施更改为以下内容:

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

如果您只想支持:UIInterfaceOrientationLandscapeLeftUIInterfaceOrientationLandscapeRightUIInterfaceOrientationPortrait,请将您的代码更改为:

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

您无需在[UIApplication sharedApplication].statusBarOrientation中查找新方向,因为您已将其作为参数。


如果要在旋转设备时重新定位视图元素,则必须使用其autoresizingMask属性。另一种选择是实现方法willRotateToInterfaceOrientation

您可以在尺寸检查器中更改Interface Builder中视图元素的autoresizingMask。尝试尝试不同的组合,直到获得所需的结果。

enter image description here

最后请注意,如果您的视图很复杂或在每个方向上完全不同,最好的选择是使用两个xib文件:一个用于纵向,一个用于横向。