iOS中的自动调整大小掩码何时生效?

5

我有一个nib,最初是为iPhone应用程序创建的,尺寸为320x480,并设置了自动调整大小掩码以在其父视图较大时向各个方向扩展视图。

我现在正在制作我的应用程序通用版本,并在iPad上使用相同的nib,在页面表中显示它。

我的问题是,我根据框架大小进行一些计算,但仍然显示为320x480。但在其他方法中,框架大小正确显示为页面表的大小。

问题:自动调整大小掩码何时生效,以便我可以在正确的时间进行计算?

2个回答

3

autoresizingMask属性在其父视图的框架更改时生效。父视图的resizesSubviews属性必须为YES。当加载NIB时,父视图的框架设置为NIB中的值。您可以在初始化时将其设置为任何您想要的值。


1
我正在以模态页面控制表单的形式呈现此视图控制器的视图。在某个时刻,自动调整大小的掩码会生效,我可以在视觉上看到这一点。但是在viewDidLoad中,我没有看到这些反映出来的变化。也许如果我在viewDidAppear中进行这些初始计算,而不是在viewDidLoad中进行,那么它可能会奏效? - Scott
尝试重写layoutSubviewsviewDidLoad仅加载子视图,不进行布局。 - XJones
1
似乎更改会在viewDidLoad执行后的下一个运行循环中生效。虽然不确定具体情况,但我将布局内容从viewDidLoad中提取出来,放入自己的方法中,现在可以从任意数量的位置调用它,包括layoutSubviews或viewWillAppear。谢谢! - Scott
1
没问题。你真正需要关注的是在 layoutSubviews 中的布局。如果你需要强制进行布局调用,随时可以使用 [view setNeedsLayout] - XJones

0

我已经很久没有进行iOS开发了,但我还记得当设备旋转时旋转视图很重要。因此,当您设置一个视图控制器以启用所有设备方向时,它会设置其视图的框架。该视图将依次设置所有子视图的框架。它将查看自动调整大小掩码以检查如何改变框架。

我不确定这个,但我认为是这样的。测试一下并告诉我们吧!

ief2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接