您的位置:首页 > 其它

View的封装

2015-12-07 22:30 417 查看

自定义View

通常当一个view内部的子控件比较多,我们一般会考虑自定义一个view,在它的内部将子控件的创建屏蔽起来,这样外界就不用关心具体如何实现,只要导入这个类的.h文件使用就好了

注意一个控件有2种创建方式:

通过代码创建:



初始化时一定会调用initWithFrame:方法



通过xib\storyboard创建:



初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法

并且在初始化完毕后会调用awakeFromNib方法



在initWithFrame:方法中添加子控件

// 1.初始化子控件
-(instancetype)initWithFrame:(CGRect)frame//通过代码创建View时,init会默认调用initWithFrame方法
{
if (self = [super initWithFrame:frame]) {
// 1.初始化一个UIImageView对象
UIImageView *iconView = [[UIImageView alloc] init];
[self addSubview:iconView];
self.iconView = iconView;
// 2.初始化一个UIlabel对象
UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.textAlignment = NSTextAlignmentCenter;
[self addSubview:titleLabel];
self.titleLabel = titleLabel;
}return self;
}


在layoutSubviews方法中设置子控件的frame(一定要调用super的layoutSubviews)

//2.调整子控件的位置和尺寸
-(void)layoutSubviews
{
// 1.调用父类的layoutSubviews(重要)
[super layoutSubviews];
// 2.取出当前控件的宽度和高度
CGFloat width = self.frame.size.width;
CGFloat height = self.frame.size.height;
// 3.调整子控件的位置和尺寸
// 3.1.调整iconView的位置和尺寸
self.iconView.frame = CGRectMake(0, 0, width, width);
// 3.2.调整titleLabel的位置和尺寸
self.titleLabel.frame = CGRectMake(0, width, width, height - width);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: