【问题标题】:Create a UIView Subclass which auto arranges its sub views according to its frame?创建一个 UIView 子类,它根据其框架自动排列其子视图?
【发布时间】:2013-04-17 09:27:21
【问题描述】:

我有这样的要求 - 我必须创建一个 UIView 的子类(例如 MyView),其中将有 4 个子视图(UIImageVeiws、UILabels)按 2X2 的位置排列。当我创建我的 UIView 子类的对象(MyView 对象) 并给出一个默认框架,视图中的 4 个子视图应根据我正在传递的超级视图框架进行排列。

如果我调整 MyView 对象框架的大小或重新构建框架,则 4 个子视图应根据我为其超级视图提供的新框架重新排列(大小、间距、原点)。

我面临实现这一目标的问题,任何人都可以帮助我如何实现这一目标。我的代码对于我的子类应该是通用的。即使我删除了 4 个子视图中的任何一个,其余 3 个视图也应排列在其整个超级视图中。

谢谢。

【问题讨论】:

  • 设置相对于父视图的子视图框架。它应该可以解决问题。顺便说一句,您尝试过什么?您有具体问题吗?

标签: ios objective-c xcode gridview uiview


【解决方案1】:

你需要实现的方法是-(void)layoutSubviews

每当您的视图框架发生变化时,以及在其他适当的时间,它都会自动调用。在此方法中,您可以访问父视图的大小并布局您拥有的各种子视图。

如果您需要在特定时间强制布局,例如在更改视图的某些属性后,您可以调用[view setNeedsLayout]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多