-
新建object-c类,从UIView继承,如新建FlagView
#import <UIKit/UIKit.h> @class FlagBean; @interface FlagView : UIView @property(nonatomic,weak)FlagBean *flag; +(instancetype)flagView; @end
FlagView.m文件#import "FlagView.h" #import "FlagBean.h" @interface FlagView () @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UIImageView *imageHead; @end @implementation FlagView /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ +(instancetype)flagView{ return [[[NSBundle mainBundle] loadNibNamed:@"FlagView" owner:nil options:nil]lastObject]; } - (void)setFlag:(FlagBean *)flagbean{ _flag = flagbean; self.nameLabel.text = flagbean.name; self.imageHead.image = [UIImage imageNamed:flagbean.icon]; } @end
注意:默认自己通过继承UIView创建的自定义View ,在m文件中是没有如下的代码的,需要自己添加,如:@interface FlagView () @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UIImageView *imageHead; @end
当然上面的@property中的内容是需要从xib中创建引用的。
-
新建一个同名xib文件,修改File's Owner的Custom Class为新建的自定义view类名
-
将xib文件中的view链接到自定义view中
-
在xib文件里可以加入其它系统控件,并连接到自定义view类中
注意:如要在xib文件的右上角的属性栏中指明class 是“FlagView”,
要不然只能写如下代码:
- (void)awakeFromNib { [[NSBundle mainBundle] loadNibNamed:@"FaceView" owner:self options:nil]; [self addSubview:self.contentView]; }
-
-
在storyboard中加入一个通用view控件,并指定Custom Class为自定义view类,按control连接到viewcontroller类中
-
在外部引用的时候:
FlagView *flagView = [FlagView flagView]; flagView.bounds = CGRectMake(0, 0, 200, 80);
-
2345
- (
void
)awakeFromNib
{
[[NSBundle mainBundle] loadNibNamed:@
"FaceView"
owner:self options:nil];
[self addSubview:self.contentView];
}