自定义View的两种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义View的两种方式相关的知识,希望对你有一定的参考价值。
(一)xib自定义view
1.思路
1)首先创建AppView类是,勾选上xib,就会创建出AppView.h,AppView.m,AppView.xib三个文件
2)先在AppView.xib文件上拖拽相应的控件,并进行适配
3)同样在AppView.h文件中,提供一个类方法创建AppView对象,并添加一个数据模型属性,用于向AppView传递模型
4)在AppView.m文件中,实现类方法,并在数据模型的set方法中实现对成员view内容的设置更新,将需要用到的空间属性通过拖线到.m文件中
2.关键代码
1 #import <UIKit/UIKit.h> 2 3 @class MJApp; 4 5 @interface MJAppView : UIView 6 7 /** 8 * 模型数据 9 */ 10 @property (nonatomic, strong) MJApp *app; 11 12 + (instancetype)appView; 13 14 /** 15 * 通过模型数据来创建一个view 16 */ 17 + (instancetype)appViewWithApp:(MJApp *)app; 18 19 @end
1 #import "MJAppView.h" 2 #import "MJApp.h" 3 4 @interface MJAppView() 5 @property (weak, nonatomic) IBOutlet UIImageView *iconView; 6 @property (weak, nonatomic) IBOutlet UILabel *nameLabel; 7 @end 8 9 @implementation MJAppView 10 //先从xib中读取出相应布局,在调用模型的set方法,设置 11 + (instancetype)appViewWithApp:(MJApp *)app 12 { 13 NSBundle *bundle = [NSBundle mainBundle]; 14 // 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回) 15 NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil]; 16 MJAppView *appView = [objs lastObject]; 17 appView.app = app; 18 return appView; 19 } 20 21 + (instancetype)appView 22 { 23 return [self appViewWithApp:nil]; 24 } 25 26 - (void)setApp:(MJApp *)app 27 { 28 _app = app; 29 30 // 1.设置图标 31 self.iconView.image = [UIImage imageNamed:app.icon]; 32 33 // 2.设置名称 34 self.nameLabel.text = app.name; 35 } 36 37 @end
在UIViewController中,直接利用appView的类方法即可创建
MJAppView *appView = [MJAppView appViewWithApp:self.apps[index]];
(二)纯代码实现自定义view
1.思路
1)同样可以在view.m方法中重写initWithFrame:(CGrect)frame这个方法,在这个方法中主要是对一些新的内容控件的添加
2)在数据模型属性的set方法中对内容控件进行设置,以及空间的frame设置
3)在- (void)willMoveToSuperView:(UIView *)newSuperview,这个方法中实现自身frame的设置
2.关键代码
以上是关于自定义View的两种方式的主要内容,如果未能解决你的问题,请参考以下文章