我有一个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;
}
这里的问题是我有很多观点可以使用,所以任何更简单的处理方式 这项任务将不胜感激。
感谢。
答案 0 :(得分:0)
制作自动旋转工作的一个基本要素是在视图上设置autoresizingMask
。
您可以在IB中直观地进行,或者以编程方式执行此操作:
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
上面的代码会使您的窗口适合其超级视图,同时保持左,右,上和下边距不变。根据您在应用程序中使用的视图之王,您可能需要使用其他调整大小标记以使您的边距灵活(即,在方向更改时移动以适应整个界面)。
此方法适用于所有iOS版本。
我发现与autoresizingMask
相关的一种技术是使用容器视图,其唯一目的是将一组子视图保持在一起。例如,一组控件应显示在距离上边距固定距离的同一行上:您将控件放在容器视图内;然后让它们在容器视图中“自由移动”(通过设置灵活的顶部/底部/左/右边距;同时使容器视图“粘贴”到您想要的位置。
除了这些一般提示之外,如果不知道你想要做什么以及你发现了什么问题,就不可能说更具体的事情。
如果您只支持iOS6,则可以使用Auto Layout。