目前,这是正在发生的事情。如果我处于纵向模式,并且我呈现一个新的 modalViewController,然后旋转到横向,autoResizing 工作完美,一切看起来都很棒。但是,如果我在风景中,并且我展示了一个新的 modalViewController,autoResizing 不起作用并且一切看起来都很时髦。谁能想到关于为什么会发生这种情况的任何可能的想法?我很绝望,我已经尝试了一切。
也许解决此问题的方法是弄清楚当我处于纵向和横向时系统调用了哪些代码。如果我的 modalView 横向呈现,也许我可以调用那个确切的代码。我试过 layoutIfNeeded 和 setNeedsDisplay 但它们什么也没做。我也试过将 contentMode 设置为重绘 - 没有帮助。
我在模态视图的 viewDidLoad 中有这个
if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
{
NSLog(@"is landscape, width:%f", self.view.frame.size.width);
}
这会输出 320,即使我是横向的,但它应该是 480。
最佳答案
UIViewAutoResizingMasks 就是我们所说的“支柱”和“ Spring ”。考虑一下:你有一个大正方形,里面有一个小正方形。为了使该正方形保持完美居中,您必须从大正方形的每个内边缘设置固定宽度,以对其进行约束。这些是支柱。
另一方面,Spring 在旋转过程中的工作方式更像 UIView。假设我们的 View 必须位于屏幕底部,居中对齐。我们希望它的顶部 Spring 保持灵活,以便当 View 从 460 像素旋转到 320 像素时,它相对于屏幕现在已更改的尺寸保持相同的位置。
记住这一点,当一个 View 以纵向加载(所有 UIViewController 都是),但实际方向是横向时, View 可能会变得“困惑”并保持一种困惑的混合方向类型 View 。如果你绝对必须(我不能强调这是最后的手段)强制预先改变方向,使用 iOS 5.x 的 +attemptRotationToDeviceOrientarion
关于iphone - UIView autoResizing 有时会起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135212/