2012-04-13 68 views
0

目前,这是发生了什么事。如果我处于肖像模式,并且呈现一个新的modalViewController,然后旋转到横向,autoResizing完美地工作,一切看起来都很棒。但是,如果我处于横向模式,并提出了一个新的modalViewController,autoResizing不起作用,并且一切看起来都很怪异。任何人都可以想出任何可能的想法,为什么会发生这种情况?我绝望,我尝试了一切。UIView autoResizing有时候工作

也许一种解决这个问题的方法就是弄清楚当我在肖像中时系统调用什么代码,然后我转向风景。也许我可以调用该确切的代码,如果我的modalView呈现在横向。我试过layoutIfNeeded和setNeedsDisplay,但他们什么都不做。我也尝试设置contentMode重绘 - 没有帮助。

我有这个在我viewDidLoad中的模态视图

if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) 
{ 
    NSLog(@"is landscape, width:%f", self.view.frame.size.width); 
} 

这个输出320,即使我在的风景,当它应该是480

+0

码吗,先生? – CodaFi 2012-04-13 04:37:18

+0

更多的是一个概念上的问题..我不知道我可以发布什么代码,这真的会有所帮助。 – Snowman 2012-04-13 04:41:55

+1

然后,你会有一个概念上的答案。 – CodaFi 2012-04-13 04:42:15

回答

2

UIViewAutoResizingMasks是我们所说的作为'支柱'和'弹簧'。考虑一下:你有一个大广场,里面有一个小广场。为了使该方形保持完美居中,您必须从大方形的每个内边缘设置固定宽度,以限制它。这些是支柱。

另一方面,弹簧更像UIView在旋转过程中的工作。假设我们的观点必须保持在屏幕的底部,并与中心对齐。我们希望保持顶级弹簧的灵活性,以便当视图从460像素旋转到320像素时,相对于屏幕现在更改的尺寸,它保持相同的位置。

记住这一点,当纵向加载视图(如同所有UIViewControllers一样),但实际方向是横向时,视图可能会变得“混乱”并且维持混乱的混合方向类型视图。如果你绝对必须(和我不能强调度假十岁上下怎么最后,这是)强行改变方向时请先用的iOS 5.x中的+ attemptRotationToDeviceOrientarion