2013-02-05 85 views
1

我想以编程方式设置视图。通过偏好我宁愿编程的意见,而不是使用界面生成器,我觉得我有一个更好的控制,由于某种原因...处理视图大小编程高度,宽度和边距

我设置了一个视图有两个子视图和一个按钮。当我改变方向时,我试图达到的目标是相同的观点。最初我以为我需要计算屏幕大小,然后计算一些分区来计算出这些变化,但看起来我可以在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

+0

您是否希望蓝色视图占用该空白区域或红色视图? – Mathew

+0

@Mathew red请 – StuartM

回答

1

你要么希望两个视图(红色和蓝色)与旋转后的空间比例的量来结束:

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

或者你想要红色视图的尺寸与其开始时的尺寸相同,并调整蓝色视图以腾出空间:

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

非常感谢你!这让我发狂,而且使用上述任何一种方法都更有意义,希望我更多地考虑过它! – StuartM

0

使用自动版式。 ü不必须处理所有这些问题......

+0

如何使用autolayouts,我不知道,任何教程/例子/信息? – StuartM

+0

同样适用于这个问题,这仅适用于ios6 ...我希望应用程序也可用于ios5。 – StuartM

相关问题