iphone - 处理视图旋转

Posted

技术标签:

【中文标题】iphone - 处理视图旋转【英文标题】:iphone - handling view rotations 【发布时间】:2010-09-27 09:28:53 【问题描述】:

我正在创建一个大小为 320 像素宽和 120 像素高的小型 UIView。 我正在使用以下代码将视图添加到最顶部的窗口。

baseview.frame = CGRectMake(0,20,320,120);
UIWindow* window = [[UIApplication sharedApplication] keyWindow];
[window addSubview:baseView];    
[window bringSubviewToFront:baseView];

上面的代码在状态栏下方显示了一个视图,它与预期的一样。 当应用程序的方向是纵向时,这可以正常工作。但是当应用程序的方向是倒置的纵向时,我又添加了一行代码来旋转视图,那就是

[baseView setTransform:CGAffineTransformMakeRotation(-M_PI/2)];

但是现在,我在应用程序底部看到了视图(而不是在状态栏下方的顶部看到),并且基本视图正在旋转并正确显示,除了底部的位置。我应该如何处理这种情况才能在状态栏下显示视图。

【问题讨论】:

【参考方案1】:

如果您将有问题的视图作为子视图添加到窗口中的主视图中,则会为您处理旋转和定位。

如果您确实需要将视图添加为关键窗口的子视图,我认为您需要调整视图的中心。

【讨论】:

即使我尝试设置视图的中心。仍然无法正常工作。我怀疑的问题是 0,0 坐标在纵向模式下从左上角开始。即使在旋转设备后,坐标也将具有相同的位置。这就是为什么它没有更改为顶部位置。 不能将视图作为子视图添加到主视图中?既然这样就可以解决问题,而且我很少需要将视图作为子视图添加到主窗口。 我同意你的看法。我正在尝试创建自己想要添加到主窗口的警报视图。即使出现键盘,我的警报也应该出现在应用程序上方。最后,设置中心解决了我的问题。感谢您的信息 确实,这将是一个有效的案例。很好,你已经解决了。 现在我遇到了其他方向的问题,即横向。如何在横向模式下确定中心?在倒置肖像模式下,我将中心设置为 160,400 并且它有效。看不懂坐标计算.....

以上是关于iphone - 处理视图旋转的主要内容,如果未能解决你的问题,请参考以下文章

iphone的旋转视图不占用整个屏幕

在横向屏幕上旋转不是 iPhone 5 和 iPhone 6 上的视图

为啥我在 iPhone 6+ 上旋转时导航栏会从拆分视图中消失?

iPhone/iPad 相机覆盖视图自动旋转问题 UIImagePickerController

iphone - 在 iphone 的方向改变时,只旋转一个控件而不是所有其他控件

带视图更新的iPhone视图自动旋转-标题和实现