ios - 从概念上讲,子类化 UIView 是否正确?

标签 ios objective-c inheritance uiview subclass

(我不是说不是,我问这个更多是为了确保我正确地实现了面向对象的原则。)

假设我想创建一个 UIView,里面有一个 UIImageView 和一个 UIImageView 标题下面的 UILabel

在 iOS 应用程序中,如果我想在我的应用程序的多个部分中重用此 UIView 设置,最好的方法是什么?

我读过的很多教程似乎都指出了 UIView 的子类,并且在其中一个 init 方法中创建了 subview ,然后将它们添加到 self,瞧,只需创建此 UIView 子类的新实例,您就拥有了一个可重用 实现。

但是这个“带标题的图像”概念作为 UIView 的子类有意义吗?我理解子类化和继承就像您有一个名为 Vehicle 的父类(super class),然后您创建了一个名为 Truck 的子类。如果你看一下,“Truck”是一个“Vehicle”,这就是我对继承的理解。

"image with caption" is a "view"

在继承中有概念上的意义吗?我知道很多人会说“当然是!”但我只是看着它,认为它不完全是父类(super class)的派生或定制,而是其他一些类的合并。

如果我正在创建类似的东西,我几乎在想我想要一个可重用的自定义 UIView 实例,而不是 UIView 的子类 但也许我'应用太尖锐的子类定义。

如果我只想要一堆红色的 UIButtons 以及我可以重复使用的标签的特殊字体怎么办?这真的是子类化的用途吗?

子类化是最好的选择吗?或者也许从 nib 创建它并用代码导入它会更好?

最佳答案

子类化它是一个完美的选择。你需要记住 UILabel 和 UIImageView 实际上是 UIView 的子类。事实上,UIKit 中的所有内容都是从 UIView 派生出来的。子类化的全部意义在于自定义您的对象。这绝对是解决此问题的好方法。

关于ios - 从概念上讲,子类化 UIView 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713623/

相关文章:

ios - 为什么尽管使用了 `insertSubview:belowSubview:`,我的 View 仍然出现在另一个 View 之上?

ios - 如何创建具有弯曲边的自定义 uicollectionviewcell?

javascript - 2种更改javascript对象原型(prototype)的方法,它们之间有什么区别?

c# - 为什么 SWIG C# 重载失败?

ios - 使用 Swift 4 解码嵌套 JSON 只返回一个对象

ios - 如何在用户在 Swift 中键入时调整 UITextField 的大小

iOS 11 顶部项目检查 UINavigationBar

ios - 如何停止应用程序商店要求下载早期版本

objective-c - 从 CIImage 在 drawRect : 中绘制 UIImage

java - 父类(super class)对子类对象的引用