IOS开发者学习笔记

子类化

2017-07-17  本文已影响33人  coderhlt
   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;
}

以上过程就是子类化过程,其实就是一种继承和封装,可以让更优雅的实现效果·,也降低了耦合性。

 @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) {
        
    }];
    ```
上一篇 下一篇

猜你喜欢

热点阅读