IOS使用Xib建立自定義View
阿新 • • 發佈:2019-02-04
-
新建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);
-
2 3 4 5 - (
void
)awakeFromNib
{
[[NSBundle mainBundle] loadNibNamed:@
"FaceView"
owner:self options:nil];
[self addSubview:self.contentView];
}