1

我正在尝试以编程方式设置视图。通过偏好,我更喜欢对视图进行编程而不是使用 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;

这是一张纵向和横向的图片,您可以在其中看到问题,并带有“白色”空间。

肖像

景观

4

2 回答 2

1

您要么希望两个视图(红色和蓝色)在旋转后具有成比例的空间:

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

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

logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
buttonView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin;
于 2013-02-06T20:31:42.317 回答
0

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

于 2013-02-05T22:00:02.277 回答