- 子类化处理
UIButton *btn=[[UIButton alloc]init];
[btn setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor redColor] forState:UIControlStateSelected];
比如说以上样式的按钮,在我们工程里全世界都使用的到,最笨的方式就是复制粘贴。你可能会想到怎么让这样的按钮于生俱来都是这样?其实很简单,我们只需要新建一个自定义类继承于,UIButton,在初始化的过程做这些操作。
@implementation TitleButton
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
self.titleLabel.font = [UIFont systemFontOfSize:16];
[self setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];
[self setTitleColor:[UIColor redColor] forState:UIControlStateSelected];
}
return self;
}
以上过程就是子类化过程,其实就是一种继承和封装,可以让更优雅的实现效果·,也降低了耦合性。
- 第三方框架子类化
自定义刷新框架一:
@interface HLTHeader : MJRefreshNormalHeader
@end
@implementation HLTRefeshHeader
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
self.stateLabel.textColor=[UIColor redColor];
self.stateLabel.font=[UIFont systemFontOfSize:14];
self.lastUpdatedTimeLabel.hidden=YES;
[self setTitle:@"赶紧下拉刷新" forState:MJRefreshStateIdle];
[self setTitle:@"松开向上刷新" forState:MJRefreshStatePulling];
[self setTitle:@"正在拼命刷新" forState:MJRefreshStateWillRefresh];
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.sectionHeaderHeight=0;
MJRefreshHeader *header=[HLTRefeshHeader headerWithRefreshingTarget:self refreshingAction:@selector(refreshdata)];
self.tableView.mj_header=header;
}
自定义刷新框架二:
@interface HLTHeader : MJRefreshHeader
@end
@implementation HLTHeader
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
UISwitch *s=[[UISwitch alloc]init];
[self addSubview:s];
self.s=s;
UIImageView *logo=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"header_cry_icon"]];
logo.backgroundColor=[UIColor yellowColor];
[self addSubview:logo];
self.imageview=logo;
}
return self;
}
- (void)layoutSubviews{
[super layoutSubviews];
self.s.center=CGPointMake(self.frame.size.width/2, self.frame.size.height/2);
self.imageview.frame=CGRectMake(self.frame.size.width/2, -0.5*self.frame.size.height, 100, 20);
}
- (void)setState:(MJRefreshState)state{
[super setState:state];
if (state==MJRefreshStateIdle) {
[self.s setOn:NO animated:YES];
}else if (state==MJRefreshStatePulling){
[self.s setOn:YES animated:YES];
}else if (state==MJRefreshStateRefreshing){
self.s.hidden=YES;
}
}
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.sectionHeaderHeight=0;
MJRefreshHeader *header=[HLTHeader headerWithRefreshingTarget:self refreshingAction:@selector(refreshdata)];
self.tableView.mj_header=header;
}
子类化AFN:
@interface HLTsessionManger : AFHTTPSessionManager
@end
@implementation HLTsessionManger
- (instancetype)initWithBaseURL:(NSURL *)url sessionConfiguration:(NSURLSessionConfiguration *)configuration{
//添加请求头
if (self=[super initWithBaseURL:url sessionConfiguration:configuration]) {
[self.requestSerializer setValue:[UIDevice currentDevice].model forHTTPHeaderField:@"Phone"];
[self.requestSerializer setValue:[UIDevice currentDevice].systemVersion forHTTPHeaderField:@"OS"];
}
return self;
}
- (void)loadData
{
AFHTTPSessionManager *mgr = [HLTsessionManger manager];
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
parameters[@"a"] = @"square";
parameters[@"c"] = @"topic";
// 3.发送请求
[mgr GET:@"http://api.budejie.com/api/api_open.php" parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary * _Nullable responseObject) {
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
```
网友评论