可以用以下方法构建custom uiview 的内容
1)draw
2)build in xib
3)add subviews
在custom UIView 的m文件中,一般按照以下对uiview进行初始设置:
1 -(void)awakeFromNib{ 2 [self setup]; 3 } 4 -(void)setup{ 5 //set up view 6 } 7 -(instancetype)initWithFrame:(CGRect)frame{ 8 self=[super initWithFrame:frame]; 9 if (self) { 10 [self setup]; 11 } 12 return self; 13 }
setup 中一般要做的事情有:
- setBackgroundColor:
- setContentMode:
- setOpaque: (尽量设置为 yes)
- setTranslatesAutoresizingMaskIntoConstraints: (如果使用autolayout,设置为no,否则可能constraint可能会冲突)
等
以下说明这三种方式的基本做法
一、draw
重写
-(void)drawRect:(CGRect)rect{}
在该方法中画UIView 的内容。
-可以用UIBezierPath画;
- 可以用CGContext 各种画图函数;
- 可以用uikit中各种控件自带的draw方法画
(如UIImage 的drawInRect:, NSAttributedString的drawInRect:)
二、load from nib
1)新建view nib 文件,在ib中拖拽添加view的内容(注意view 的class 为custom view 的class),并可设置constraint
2)可用以下语句直接创建view
[[[NSBundle mainBundle]loadNibNamed:@"xib file name " owner:nil options:nil] lastObject];
好处(前提是熟悉ib):
1.方便快速的添加内容、设置iboutlet 和ibaction、添加gesture等
2.便于 localization
3.便于设置constraint
三、add subviews
这种方法比较直接,代码中新建UIView并增加