码迷,mamicode.com
首页 > 移动开发 > 详细

iOS创建头部视图

时间:2015-03-03 09:58:54      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:imageview   uitableview   控件   uilabel   

//创建头部视图

+(instancetype)headerViewWithTableView:(UITableView *)tableView{

    return [[self alloc]initWithTableView:tableView];

}

-(instancetype)initWithTableView:(UITableView *)tableView{

    static NSString * indentifier = @"header";

    GYLHeaderView * headerView = [tableView dequeueReusableCellWithIdentifier:indentifier];

    if (headerView == nil) {

        headerView = [[GYLHeaderView alloc]initWithReuseIdentifier:indentifier];

    }

    return headerView;

}

//但凡在init中获得的frame都是 0

-(id)initWithReuseIdentifier:(NSString *)reuseIdentifier

{

    if(self =[super initWithReuseIdentifier:reuseIdentifier])

    {

        //1.添加子控件

        //1.1添加按钮

        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];

        //添加按钮的点击事件

        [btn addTarget:self action:@selector(btnOnClick:) forControlEvents:UIControlEventTouchDragInside];

        //设置按钮的背景图片

        [btn setBackgroundImage:[UIImage imageNamed:@"buddy_header_bg"] forState:UIControlStateNormal];

        [btn setBackgroundImage:[UIImage imageNamed:@"buddy_header_bg_highlighted"] forState:UIControlStateHighlighted];

        //设置按钮的上的尖尖的图片

        [btn setImage:[UIImage imageNamed:@"buddy_header_arrow"] forState:UIControlStateNormal];

        //设置按钮的内容左对齐

        

        btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

        //2.设置按钮的内边距,这样按钮的内容距离左边就有一定的距离

        btn.contentEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);

        //3.设置按钮色标题和图片之间的距离

        btn.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);

//        btn.imageEdgeInsets 这是设置图片的距离

        [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

        

        //设置btn中的图片不填充整个imageView

        btn.imageView.contentMode  = UIViewContentModeCenter;

        //超出的部分不要进行剪切

//        btn.imageView.clipsToBounds = NO;

        btn.imageView.layer.masksToBounds = NO;

        [self addSubview:btn];

        self.btn = btn ;

        //1.2添加label

        UILabel * label = [[UILabel alloc]init];

//        label.backgroundColor = [UIColor grayColor];

        //设置文本右对齐

        label.textAlignment = NSTextAlignmentRight;

        label.textColor = [UIColor grayColor];

        [self addSubview:label];

        self.label = label;


    }

    return self;

}






// 该方法在控件的frame被改变的时候就会调用

// 该方法一般用于调整子控件的位置

- (void)layoutSubviews

{

#warning 切记重写layoutSubviews方法一定要调用父类的layoutSubviews

    [super layoutSubviews];

    //    1.设置按钮的frame

    self.btn.frame = self.bounds;

    //    2.设置labelframe

    CGFloat padding = 20;// 间隙

    CGFloat labelY = 0;

    CGFloat labelH = self.bounds.size.height;

    CGFloat labelW = 150;

    CGFloat labelX = self.bounds.size.width - padding - labelW;

    self.label.frame = CGRectMake(labelX, labelY, labelW, labelH);

}


- (void)btnOnClick:(UIButton *)btn

{

    NSLog(@"按钮被点击了");

    //     1.修改组模型的isOpen属性

    //    修改模型数据数据

    self.qqGroup.open = !self.qqGroup.isOpen;

    //    2. 刷新表格(通知代理)

    if ([self.delegate respondsToSelector:@selector(headerViewDidClickHeaderView:)]) {

        [self.delegate headerViewDidClickHeaderView:self];

    }

    

    //    3.修改btn上图片,让图片旋转

    // self.btn.imageView.transform = CGAffineTransformMakeRotation(M_PI_2);

    

    //    NSLog(@"%p %@", self, self.qqGroup.name);

}


#pragma mark - 当一个控件被添加到其它视图上的时候会调用以下方法

// 已经被添加到父视图上的时候会调用

- (void)didMoveToSuperview

{

    // 在这个方法中就快要拿到最新的被添加到tableview上的头部视图修改它的图片

    if (self.qqGroup.isOpen) {

        self.btn.imageView.transform = CGAffineTransformMakeRotation(M_PI_2);

    }

}

// 即将被添加到父视图上的时候会调用

- (void)willMoveToSuperview:(UIView *)newSuperview

{

    // NSLog(@"willMoveToSuperview");

}


- (void)setQqGroup:(GYLGroupModel *)qqGroup

{

    _qqGroup = qqGroup;

    

    //    1.设置按钮上的文字

    [self.btn setTitle:_qqGroup.name forState:UIControlStateNormal];

    //    2.设置在线人数

    self.label.text = [NSString stringWithFormat:@"%@/%d"_qqGroup.online, (int)_qqGroup.friends.count];

}


iOS创建头部视图

标签:imageview   uitableview   控件   uilabel   

原文地址:http://blog.csdn.net/guoyule2010/article/details/44026843

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!