0

我有一个 iPad 应用程序,其中加载了许多 UIViews 和图像。它在一个方向上工作正常,但现在我需要让它适用于所有方向。我正在订阅 UIDeviceOrientationDidChangeNotification。现在,一旦我知道设备朝向哪个方向,我就必须重置 UI。我现在正在做的是手动遍历每个 UIView 并更改其原点,然后该视图中的任何内容我也重新配置其原点。有没有更简单的方法来旋转视图?例子 :

         - (void)orientationChanged:(NSNotification *)notification
         {
             UIDeviceOrientation oriantation;
             newOrientation=[[UIDevice currentDevice] orientation];
             switch (newOrientation) {
                   case UIDeviceOrientationLandscapeRight:
                            CGRect landscaperight = self.view.frame;
                            landscaperight.origin.x -= 768;
                            self.view.frame = landscaperight;
               break; 
         }

这里的问题是我有很多观点要处理,所以任何更简单的处理这项任务的方法都会受到赞赏。

谢谢。

4

1 回答 1

0

使自动旋转工作的一个基本部分是设置autoresizingMask您的视图。

您可以在 IB 中直观地执行此操作,也可以像这样以编程方式执行此操作:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

上面的代码将使您的窗口适合其父视图,同时保持左、右、上、下边距不变。根据您在应用程序中使用的视图王,您可能需要使用其他调整大小标志来使您的边距灵活(即,当方向改变时移动以适应整个界面)。

这种方法适用于所有 iOS 版本。

我发现与之相关的一项有用的技术autoresizingMask是使用容器视图,其唯一目的是将一组子视图放在一起。例如,一组控件应该显示在与上边距固定距离的同一行上:您将控件放在容器视图内;然后让它们在容器视图中“自由移动”(通过设置灵活的上/下/左/右边距;同时让容器视图“粘”到您想要的位置。

除了这些一般性提示之外,如果不知道您要做什么以及您发现了什么问题,就无法说出更具体的内容。

如果你只支持 iOS6,你可以使用Auto Layout

于 2013-01-30T16:06:44.033 回答