创建一个 UIView 用作子视图

Posted

技术标签:

【中文标题】创建一个 UIView 用作子视图【英文标题】:Create a UIView to use as a subView 【发布时间】:2014-10-13 11:05:54 【问题描述】:

我有一个空白!

我有一个 ViewController,我需要在其中插入 3 个子视图。到目前为止没有问题。 在每个子视图中,我需要添加一个带有一些代码的 UIView(例如,绘制图表)。

我的问题来了!

如何初始化具有图表方法的 UIView?该视图不处理 viewDidLoad,因为它不是 ViewController。

谢谢,

【问题讨论】:

UIView 使用 drawRect: 来显示自己。 这些天你真的只能使用容器视图...***.com/a/23403979/294884 【参考方案1】:

您可能应该继承UIView 并在那里构建您的自定义视图。然后你可以给这个视图你想要的功能,在这种情况下你提到的图表方法。如果你称之为例如ChartView 您可以实例化并将其添加到您的视图控制器的视图中,就像您使用常规的 UIView 实例一样,例如(假设您在您的视图控制器中,例如在 viewDidLoad 中):

ChartView *chartView = [[ChartView alloc] initWithFrame:frame];
[self.view addSubview:chartView];

【讨论】:

我强烈建议不要这样做!只需将容器视图拖入。然后正如 nburk 所说,制作一个名为“ChartView”的 UIViewController。在那里和现场,让你的图表显示出来。 只是古玩,为什么你会选择容器视图而不是子类化UIView 对我来说,听起来这些子视图应该输入一些数据,然后根据它们收到的数据进行绘制......这是子类化UIView 的完美案例,不是吗?容器用于视图控制器,对吗?这是您想要提供交互的情况,......或者我错过了什么? 你好!使用视图控制器比使用原始 UIView 容易得多。整个应用程序可能只是一个 UIView(没有视图控制器),但我们没有这样做。你真的“打不过苹果”。使用故事板比不使用它容易得多;使用 swift 比避免使用 swift 容易得多,等等! OP 必须完全熟悉容器视图,所以这是一个很好的机会。 请注意,在这些非常古老的问题上,例如人们正在为加载自定义 UIView xib 等问题而烦恼...***.com/a/25910881/294884(确实注意我添加了一个新答案,只是说“使用容器意见!”)

以上是关于创建一个 UIView 用作子视图的主要内容,如果未能解决你的问题,请参考以下文章

动态添加 UIView,还是创建 UITableView? IOS

创建一个基于 UIView 的子视图自动调整大小的视图

多次使用 UIView(使用 xib 创建)作为同一视图的子视图

如何在iOS中的UIView子视图下方插入UILabel

如何创建一个序列来迭代从 UIView 向上到视图层次结构到根的所有祖先(超级视图)?

带有 CGPath 的 UIView 和另一个包含第一个 UIView 的 UIView。如何将第一个视图放入第二个视图?