UIView详解:10-使用xib创建自定义UIView
在开发过程中,经常需要根据需求去定制各种式样的UIView对象。当需要定制UIView类时,可以使用纯代码以及Xib两种方式,在实现方法上稍有区别,但是有些共同的注意点必须特别关注,最好按照苹果建议的步骤和要求来创建自定义UIView。
使用Xib创建自定义UIView的步骤
当使用Xib创建自定义UIView时,建议大家按照如下步骤进行:
新增一个NibView类,继承自UIView
新增一个xib文件,命名为NibView.xib
- 指定该xib文件对应的类
- 使用Xib绘制UIView的界面,添加子视图并设置约束关系;
- 由于使用xib在初始化时不会调用initWithFrame:方法,而是调用initWithCoder:方法,因此,建议在.h文件中定义一个类方法initFromNib,并在.m文件中对该方法进行实现。该方法的主要功能时从xib中加载,该方法会调用initWithCoder:方法。如下所示:
// NibView.h
import <UIKit/UIKit.h>
@interface NibView : UIView
@property (weak, nonatomic) IBOutlet UIView *subView;
+(NibView *)initFromNib;
@end
/**
* 从Nib中取出对象,会调用initWithCoder:
*
* @return
*/
+(NibView *)initFromNib{
NSLog(@"%s",__func__);
return [[[NSBundle mainBundle] loadNibNamed:@"NibView" owner:self options:nil] lastObject];
}
- (instancetype)initWithCoder:(NSCoder *)coder
{
NSLog(@"%s",__func__);
self = [super initWithCoder:coder];
if (self) {
}
return self;
}
- 假如需要对自定义UIView进行进一步的定制,定制代码可以写在awakeFromNib方法中;
//用于定制View的样式,使用Xib建议在awakeFromNib中设置视图属性
-(void)awakeFromNib{
NSLog(@"%s",__func__);
self.alpha = 0.5;
}
- 当需要对子视图进行重新布局的时候,实现layoutSubViews方法;
- 当需要做自定义绘图的时候,实现drawRect:方法(同代码创建自定义View);
- 如果视图需要响应用户交互,如点击等,可以为视图添加手势或者实现UIResponder类的touches系列方法(同代码创建自定义View)。
官方文档
示例代码
https://github.com/99ios/7.2.10
文章发布时间为: September 27th , 2016 at 11:22 pm
最后编辑时间为: September 6th , 2017 at 11:12 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 6th , 2017 at 11:12 am
本文由 99ios 创作,转载请注明出处