当方向改变时,通过“transform”属性旋转UIView会变得混乱

时间:2010-10-08 17:00:16

标签: ios-simulator ipad

我正在尝试创建一个iPad应用程序,但是我遇到了一个来自模拟器的可疑行为(目前无法在设备上进行测试......)。

问题在于让任何UIView旋转其transform属性,然后通过更改iPad的方向来允许包含它的视图。这可以通过创建一个新的基于视图的iPad项目并将以下代码插入视图控制器来简化:

- (IBAction) rotate:(UIView*)sender {
 if (CGAffineTransformIsIdentity(sender.transform)) {
  sender.transform = CGAffineTransformMakeRotation(M_PI / 4);
 } else {
  sender.transform = CGAffineTransformIdentity;
 }
}

然后向视图添加单个按钮,并将其操作与上述方法相关联。

如您所见,该方法应该在单击时旋转按钮,然后再次单击时取消旋转 - 它就是这样做的。但是,当按钮旋转,并且你改变方向(从硬件菜单),它将开始表现得非常奇怪 - 改变它的形状或完全消失。

值得注意的是,如果我创建翻译转换,则不会发生这种情况。

我的问题是:

<击> 1。由于我目前没有iPad(正在处理),有人可以告诉我这是否也会在设备上发生? 我在这里做错了吗?也许这不是旋转UIView的方法?如果是,那是什么?

更新:从文档中看来,似乎如果[transform]属性不是identity变换,则frame属性的值是未定义的,因此应该被忽略。所以问题可能是我在更改转换属性时使用 autoresizeMask 这一事实。 那么该怎么做或应该做什么?

谢谢, 阿维亚德。

1 个答案:

答案 0 :(得分:0)

我想如果我没记错的话,我会在一段时间内遇到同样的问题,这是由于在Interface Builder中设置了锚点引起的。进入尺寸检查器并关闭将视图固定到授权面板边缘的针脚,我认为应该这样做。

我希望我能正确记住这一点。