代码之家  ›  专栏  ›  技术社区  ›  falstro

自动旋转自定义uiview时保持比例

  •  1
  • falstro  · 技术社区  · 15 年前

    这可能真的很容易,真的很愚蠢,或者我的google fu已经严重恶化了。不管怎样,我正在为我的应用程序实现自定义视图,它使用纯CGContext绘图,没有子视图(至少现在是这样)。问题是,我想要它自动旋转,所以我有 shouldAutorotateToInterfaceOrientation 返回是,瞧,视图旋转。但是这样做实际上并不是重绘内容(我假设在框架的某个地方渲染为纹理并溅到rect上,但这在这里并不真正相关),rect只是简单地拉伸,挤压内容。我怎样才能让它在旋转时简单地画出一个更大的区域呢?也就是说,我的内容比屏幕大,我只想在旋转过程中更改视区。

    我试过设置视图 contentMode UIViewContentModeRedraw 但那没什么作用,我试过玩 autoresizeMask 但似乎也没什么帮助。我还尝试插入 setNeedsDisplay 在里面 willRotateToInterfaceOrientation 但是,这只会导致它使用新的边界重新绘制(即先挤压它,然后在旋转期间将其拉伸到正确的大小),这也是我不想看到的。

    有人知道我该怎么做才能让这个工作吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   falstro    15 年前

    事实证明,这是一种既愚蠢又简单的混合体。如果哪天有人愿意读的话,我会把它贴在这里。我设法解决这个问题的方法实际上是在窗口和我的视图之间夹一个视图(我想你可以直接在窗口上工作,但是这样感觉更直观)。也就是说,我将视图作为子视图添加到该视图中,我将称之为框架。

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

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