我一直在寻找最佳实践以及创建自定义、可重用视图组件的方法。到目前为止,似乎自定义 UIView 子类是要走的路。
在这种情况下,我所需要的只是一个可以轻松访问标签的固定大小的视图,并且方便的初始化程序会很棒。我可以标记标签并使用常量,但考虑到这一点似乎没有必要(删除了 UIKit 导入的样板)(使用 ARC):
// .h file
@interface MyView : UIView
@property (nonatomic, weak) IBOutlet UILabel *label;
+ (id)withText:(NSString *)text;
@end
// .m file
@implementation MyView
+ (id)withText:(NSString *)text {
MyView *view = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class])
owner:nil
options:nil] objectAtIndex:0];
view.label.text = text;
return view;
}
@end
(编辑:更改为类方法。我的担忧仍然没有改变,尽管总体上不那么可疑)
MyView.xib 文件的唯一顶级元素(UIView)有一个自定义类设置为 MyView,并且插座连接到 FileOwner。
而且……这行得通。完美。它在我使用它的任何地方都能正确呈现,没有例外,没有剪裁,我看不到任何有趣的事情。
至今。我有点担心:
- 我还没有在任何地方看到这种技术。当然,我一直在寻找相对较短的时间(几个小时,被动地)。
- 我没有对 initWithFrame: / Coder: 等进行任何推荐的覆盖。
- 我现在只在一个极其有限的领域使用它,因此对于视图消失、绘图性能未知、我没有彻底检查内存泄漏等情况,它还没有经过很好的测试。
- 我几乎可以肯定我错过了什么。很可能我会在更多使用它时很快找到它,但我可能找不到所有这些。
有比我更多的 UIView 经验的人介意借用他们的大脑吗?这是一个好主意吗?一个可怕的“天哪,你在想什么”的想法?有惊喜等着我吗?关于如何创建这样的简单自定义视图,我应该阅读一些内容吗?