在ipad应用程序中旋转视图(以及调整其中的元素)的麻烦

时间:2010-07-18 10:13:04

标签: iphone ipad rotation

我在iPad上进行旋转时遇到了噩梦。我在这个地方搜索了一些教程,但似乎没有任何东西真的适合我想要的东西。 (可能不是在寻找合适的东西?!)

我默认有一个纵向视图,它是视图中的图像和按钮。当我旋转时,我发现这可以解决它的风景。然后我尝试将uiview的帧大小设置为非常适合屏幕。

如果我让它自动调整,它只会伸展并填满屏幕。这个我不想要。 但问题是,当我调整大小时,按钮也会调整大小,但与图像的比例不同。

我的问题是:调整视图大小的最佳方法是什么。我想简单地将uiview减少60%,并且在该视图中将所有内容调整为60%。我现在看到的唯一方法是创建两个视图......但这是工作和维护的两倍!

我已尝试搞乱“界面”构建器中的自动调整箭头,但这似乎再次搞砸了!

我完全迷失在这里!!感谢您提供任何信息

2 个答案:

答案 0 :(得分:1)

您遇到的问题是视图会自动调整为屏幕比例。在纵向方向的iPad上,屏幕尺寸为1024x768。旋转到横向后,原点也会旋转,屏幕内容会歪斜或拉伸到768x1024。

您需要做的是覆盖

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

旋转视图的UIViewController的消息。在旋转的动画块中调用此消息。您只需将子视图(按钮)的框架大小设置为最适合您的框架。一旦我在旋转OpenGL视图时遇到问题。旋转到横向时,视图的内容被拉伸。由于不可能改变动画块中的任何OpenGL矩阵,我找到的唯一解决方案是使视图呈二次方并将原点设置在屏幕边界之后(在-x方向)。您还必须覆盖该消息,以便在横向模式下重置屏幕上方的原点(在-y方向)边界,以将视口保持在屏幕中间。这样,视图保持了它的比例。无论什么解决方案最适合您,覆盖此消息都应该有效。

答案 1 :(得分:0)

您是否尝试过禁用UIView上的autoresizesSubviews属性?在调整视图大小时,它应该可以防止子视图上的任何大小更改。