UIView 子视图不是为 iPad 自动旋转或自动调整大小

Posted

技术标签:

【中文标题】UIView 子视图不是为 iPad 自动旋转或自动调整大小【英文标题】:UIView subview is not autorotating or auto-sizing for iPad 【发布时间】:2010-08-25 22:26:06 【问题描述】:

在我的 iPhone 应用程序中,我有一个带有两个子视图的 UIViewController:一个主 UIView(我们称之为 mainView)和一个辅助 UIView(我们称之为 secondView),它通常是隐藏的,但有时会显示(例如用户设置) .在我的 UIViewController 中,self.view 设置为 mainView。当用户切换到子视图时,我调用[self.view addSubview:secondView],当用户切换回主UIView时,我调用[secondView removeFromSuperview]

我目前正在处理两个问题:

    当用户旋转 iPhone 或 iPad 时,主 UIView (mainView) 会正确自动旋转,并且它的所有 UI 项都遵循我在 Interface Builder 中设置的自动调整大小规则。但是,当显示辅助 UIView (secondView) 并且旋转 iPhone 或 iPad 时,secondView 及其所有 UI 项不遵循其自动调整大小规则。我发现当我设置self.view = secondView,然后旋转设备时,视图旋转正常。 特别是在 iPad 中,当我使用 [self.view addSubview:secondView] 拉起 secondView 时,它不会调整大小以填充全屏,就像主 UIView 已针对 iPad 版本调整大小一样。所以我最终得到了一个屏幕,它在后台显示 mainView UIView,在左上角显示 secondView UIView,而不占用整个屏幕。

我的直觉告诉我,这两个问题是相互关联的。有没有其他人在使用 addSubview: 添加到 UIViewControllers 的辅助 UIViews 时遇到过这类问题?

【问题讨论】:

我在 ios6 的 iPhone 上也有类似的体验。我有一个通常隐藏的子视图,即使其他所有内容都面向横向,它也坚持面向纵向。就好像它从来没有费心去理解它是视图下面的视图层次结构的一部分,所有这些视图都已旋转。 【参考方案1】:

使用addSubview时,

[secondView setFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

不是很优雅。但它对我有用:

【讨论】:

【参考方案2】:

我遇到了类似的问题。我通过设置视图的内容模式解决了大小问题。

Exp:[_yourView setContentMode:UIViewContentModeScaleAspectFill];

我希望这会有所帮助...

【讨论】:

您应该在 ``` 之间格式化您的代码,或者在代码前面使用 4 个空格。有一个按钮可以帮助格式化代码。

以上是关于UIView 子视图不是为 iPad 自动旋转或自动调整大小的主要内容,如果未能解决你的问题,请参考以下文章

UIView 旋转没有 XIB

无法在 iPad 上正确旋转翻译后的 UIView

调整旋转 UIView 的子视图大小

iPad 应用程序中的旋转

旋转后重新初始化 UIView 视图和子视图

如何将 UIView 调整为横向?