在自动旋转自定义UIView时保持比例

时间:2009-12-05 00:35:56

标签: iphone uikit

这可能是真正容易的,真正的愚蠢,或者我的谷歌已经采取了严重的转机。无论如何,我正在为我的应用程序实现自定义视图,它使用纯CGContext绘图,没有子视图(至少现在)。问题是,我想让它自动旋转,所以我shouldAutorotateToInterfaceOrientation返回YES,瞧,视图旋转。但是这样做实际上并没有重新绘制内容(我假设它被渲染成框架中某个地方的纹理并溅到了矩形上,但这并不是真的相关),矩形只是拉伸,压扁内容。如何让它在旋转时简单地发出更大面积的平局?也就是说,我的内容比屏幕大,我只是想在旋转过程中改变视口。

我已尝试将视图的contentMode设置为UIViewContentModeRedraw,但这没有做任何事情,我尝试过使用autoresizeMask的东西,但似乎没有帮助。我也尝试在setNeedsDisplay中插入一个willRotateToInterfaceOrientation,但这只会导致它使用新边界重绘(即先将它压扁,然后在旋转过程中将其拉伸到正确的大小),这也不是我想看到的。

有没有人知道如何让它发挥作用?

1 个答案:

答案 0 :(得分:1)

事实证明,这是一种愚蠢和容易的混合体。如果有人应该在某一天阅读它,我会在这里发布。我设法解决它的方式实际上是在窗口和我的视图之间夹着一个视图(我想你可能可以直接在窗口上工作,但这种感觉更直观)。也就是说,我将我的视图作为子视图添加到该视图中,我将其称为框架。

框架正常调整大小,然而,我关闭子视图的大小调整,并使我自己的视图比观看区域更大(实际上是方形,480x480,所以它可以覆盖整个屏幕的任何一种方式)。问题基本解决了。

现在我正在玩willRotateToInterfaceOrientation期间框架中视图的偏移动画,让它看起来围绕中心而不是左上角旋转,但这是一个不同的问题。