处理视图调整程序高度,宽度和边距的大小

时间:2013-02-05 21:55:31

标签: ios ios5 uiview cgrect cgrectmake

我正在尝试以编程方式设置视图。通过首选项,我更喜欢编写视图而不是使用Interface Builder,我觉得我有更好的控制因为某些原因......

我正在设置一个包含两个子视图和一个按钮的视图。我想要实现的是当方向改变时的相同视图。最初我认为我需要计算屏幕大小然后计算一些分区以计算出更改,但看起来我可以处理UIViewAutoresizing ***

我遇到的问题是上边距。这是我的子视图代码。

    // Create sub view for Logo
UIView *logoView =[[UIView alloc] initWithFrame:CGRectMake(0,0,320,280)];
[logoView setBackgroundColor:[UIColor blueColor]];
logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

// Create sub view
UIView *buttonView =[[UIView alloc] initWithFrame:CGRectMake(0, logoView.bounds.size.height, 320,200)];
[buttonView setBackgroundColor:[UIColor redColor]];
buttonView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleTopMargin;

这是一张纵向和横向的图片,您可以通过“白色”空间查看问题。

Portrait

Landscape

2 个答案:

答案 0 :(得分:1)

你要么想要两个视图(红色和蓝色)在旋转后以一定比例的空间结束:

logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleBottomMargin;
buttonView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleTopMargin;

或者您希望红色视图的大小与开始时的大小相同,并且要调整蓝色视图以腾出空间:

logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
buttonView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin;

答案 1 :(得分:0)

使用自动布局。你不必处理任何这些问题......