我想创建自己的控件,它包含几个UILabel和几个UITextField。问题是我不知道从哪里开始!我是否直接将UIControl子类化,然后创建我的子视图并将它们添加到init中的主视图中?或者我使用layoutSubviews?我需要覆盖drawRect:?
我习惯于创建“Controller”类来处理添加子视图但是如果我将UIControl子类化,那么我不确定要覆盖哪些方法进行设置!
我以前从未这样做过,所以我真的很感激一些指示!
干杯!
答案 0 :(得分:6)
您确定要UIControl
吗? UIControl
类用于非常简单,通常可重用的控件,如按钮和文本字段,需要支持一组有限的事件(如“触摸”或“值已更改”)。如果您只想创建一种将多个视图组合在一起的方法,则应使用UIView
代替。
在任何一种情况下,这都是你应该做的:
创建子视图并在-initWithFrame:
中设置其大部分属性。将它们保存在实例变量中,并将它们添加为self的子视图。
在-layoutSubviews
中设置框架,并根据self.bounds
进行计算。每当您的视图更改大小时,系统都会调用此方法,包括在-initWithFrame:
之后。
除非您需要使用Core Graphics功能进行自定义绘图,否则您不需要实现-drawRect:
。