在设备旋转时自动调整子视图大小

时间:2010-09-23 12:55:07

标签: iphone rotation

我设置了所有子视图,以便它们基于self.view

EG:UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,(self.view.frame.size.width-20),(self.view.frame.size.height-90))];

然而,当视图旋转(shouldRotateToDeviceOrientation或其他)时,视图都保持相同的大小。如何让它们改变形状以适应?我可以自动执行此操作吗?

由于

3 个答案:

答案 0 :(得分:2)

绝对。看看autoresizingMask属性。如果您设置图像视图(在这种情况下)具有UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight的自动调整遮罩,那么当其父视图调整大小时(因为它可能会或可能不会在您的应用程序旋转时自动执行 - 您可能必须设置类似在父视图上autoresizingMask,它将保留您为其设置的外部边距。

答案 1 :(得分:1)

如果你在父视图的底部有一个视图,这应该会有所帮助:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;

自我是您的孩子视图,应该调整大小。如果你没有设置UIViewAutoresizingFlexibleTopMargin,那么在水平模式下,如果它在垂直模式下位于底部,你将看不到你的视图。

另外不要忘记设置:

self.autoresizesSubviews = YES;

并在视图中自动调整所有子视图的模式。因此,当调整大小时,其中的所有内容也会调整大小。

答案 2 :(得分:0)

你必须[view setAutoresizingMask:...]