同学们肯定在项目中都会遇到自定义控件,需要自己来封装,下边我和大家一起探讨一下关于UI控件的封装,后续会给demo,这节就先介绍封装的那些需要重写的方法。示例如下:
#import "FirstCustomView.h"
@implementation FirstCustomView
{
NSInteger curX;
NSInteger curY;
}
//封装UI控件,无外乎就是下边的这几个方法,根据项目需要,就是在下边的这些方法中选取几个进行重写,达到项目的目的。
/*
下边的方法释义:
UI控件的初始化的位置,如果程序需要在nib文件中夹在该控件后进行自定义初始化操作,那么就重写下边的方法。
*/
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
return self;
}
//当你用的是XIB布局的时候可以在这个方法里对你的XIB进行再调整,比如我里边就是要改变XIB布局中的一些约束需要改变,我可以选择在XIB中写,也可以在这个方法中用代码写约束,或者在增加一些新的View等都可以在这个方法中写,达到你想要的最终效果
- (void)awakeFromNib {
self.topConstraint.constant += 200;
self.rightConstraint.constant -= 100;
self.leftConstraint.constant += 100;
}
/*
下边的方法释义:
程序在创建UI控件时会掉用下边的方法做初始化操作,也就是说对UI控件的初始化就放在这个里边操作,纯代码布局的时候用这个方法来布局
*/
- (instancetype)initWithFrame:(CGRect)frame {
self = [superinitWithFrame:frame];
return self;
}
/*
下边的方法释义:
通过重写下边的方法,实现程序如果需要自行绘制此控件内容
*/
- (void)drawRect:(CGRect)rect {
}
/*
下边的方法释义:
通过重写下边的方法,实现程序如果需要对此控件布局进行更精确的控制。
*/
- (void)layoutSubviews {
}
/*
下边的方法释义:
当控件添加字控件完成时会激发下边的方法
*/
- (void)didAddSubview:(UIView *)subview {
}
/*
下边的方法释义:
当控件将要移除子控件时会激发下边的方法
*/
- (void)willRemoveSubview:(UIView *)subview {
}
/*
下边的方法释义:
当控件将要添加到父控件时会激发下边的方法
*/
- (void)willMoveToSuperview:(UIView *)newSuperview {
}
/*
下边的方法释义:
当控件添加到父控件完成时会激发下边的方法
*/
- (void)didMoveToSuperview {
}
/*
下边的方法释义:
当控件将要添加到窗口时会激发下边的方法
*/
- (void)willMoveToWindow:(UIWindow *)newWindow {
}
/*
下边的方法释义:
当控件添加到窗口完成时会激发下边的方法
*/
- (void)didMoveToWindow {
}
/*
下边的方法释义:
当用户开始触碰该控件时会激发下边的方法
*/
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
}
/*
下边的方法释义:
当用户在该控件上移动时会激发下边的方法
*/
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
}
/*
下边的方法释义:
当用户取消触碰该控件时会激发下边的方法
*/
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
}
/*
下边的方法释义:
当用户结束触碰该控件时会激发下边的方法
*/
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
}
@end