【问题标题】:Handling view resizing programatically heights, widths and margins处理视图以编程方式调整高度、宽度和边距
【发布时间】:2013-02-05 21:55:30
【问题描述】:

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

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

【问题讨论】:

  • 您希望蓝色视图占据那个空白区域还是红色视图?

标签: ios ios5 uiview cgrect cgrectmake


【解决方案1】:

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

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

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

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

【讨论】:

  • 非常感谢!!!这让我发疯了,使用上述任何一种方法肯定更有意义,希望我能多考虑一下!
【解决方案2】:

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

【讨论】:

  • 如何使用自动布局,不知道有没有教程/例子/资料?
  • 同样适用于这个问题,这仅适用于 ios6...我希望该应用程序至少也适用于 ios5。
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 1970-01-01
  • 2013-01-09
  • 2011-06-29
  • 2012-08-13
  • 2020-01-11
  • 2012-01-23
  • 2011-04-13
相关资源
最近更新 更多