码迷,mamicode.com
首页 > 其他好文 > 详细

49.小项目:QQ好友列表 V部分

时间:2015-08-12 01:13:46      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

---------- CZGroupHeader.h ----------

#import <UIKit/UIKit.h>


@class CZFriendGroup, CZGroupHeader;


@protocol CZGroupHeaderDelegate  <NSObject>


@optional


- (void)groupHeaderClick:(CZGroupHeader *)header;


@end


@interface CZGroupHeader : UITableViewHeaderFooterView


+ (instancetype)headerWithTableView:(UITableView *)tableView;


@property (strong, nonatomic) CZFriendGroup *group;

@property (weak, nonatomic) id<CZGroupHeaderDelegate> delegate;


@end

---------- CZGroupHeader.m ----------

#import "CZGroupHeader.h"

#import "CZFriendGroup.h"


@interface CZGroupHeader()


@property (weak, nonatomic) UIButton *nameBtn;

@property (weak, nonatomic) UILabel *onlineLabel;


@end


@implementation CZGroupHeader


+ (instancetype)headerWithTableView:(UITableView *)tableView

{

    static NSString *ID = @"group";

    CZGroupHeader *header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];

    if (header == nil) {

        header = [[CZGroupHeader alloc] initWithReuseIdentifier:ID];

        CGFloat headerW = tableView.frame.size.width;

        header.frame = CGRectMake(0, 0, headerW, 44);

    }

    return header;

}


- (id)initWithReuseIdentifier:(NSString *)reuseIdentifier

{

    if (self = [super initWithReuseIdentifier:reuseIdentifier])

    {

        UIButton *nameBtn = [UIButton buttonWithType:UIButtonTypeCustom];

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

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

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

        nameBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

        nameBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

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

        nameBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

        nameBtn.titleLabel.font = [UIFont systemFontOfSize:17];

        [nameBtn addTarget:self action:@selector(nameClick) forControlEvents:UIControlEventTouchUpInside];

        nameBtn.imageView.contentMode = UIViewContentModeCenter;

        nameBtn.imageView.clipsToBounds = NO;

        [self addSubview:nameBtn];

        self.nameBtn = nameBtn;

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

        onlineLabel.textColor = [UIColor grayColor];

        onlineLabel.textAlignment = NSTextAlignmentRight;

        onlineLabel.backgroundColor = [UIColor clearColor];

        [self addSubview:onlineLabel];

        self.onlineLabel = onlineLabel;

    }

    return self;

}


- (void)layoutSubviews

{

    [super layoutSubviews];

    self.nameBtn.frame = self.bounds;

    CGFloat onlineY = 0;

    CGFloat onlineH = self.frame.size.height;

    CGFloat onlineW = 150;

    CGFloat onlineX = self.frame.size.width - onlineW - 10;

    self.onlineLabel.frame = CGRectMake(onlineX, onlineY, onlineW, onlineH);

}


- (void)setGroup:(CZFriendGroup *)group

{

    _group = group;

    [self.nameBtn setTitle:group.name forState:UIControlStateNormal];

    self.onlineLabel.text = [NSString stringWithFormat:@"%d/%ld", group.online, group.friends.count];

}


- (void)nameClick

{

    self.group.open = !self.group.open;

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

    {

        [self.delegate groupHeaderClick:self];

    }

}


- (void)willMoveToSuperview:(UIView *)newSuperview

{

    if (self.group.open)

    {

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

    } else {

        self.nameBtn.imageView.transform = CGAffineTransformIdentity;

    }

}


@end

---------- CZFriendCell.h ----------

#import <UIKit/UIKit.h>

#import "CZFriend.h"


@interface CZFriendCell : UITableViewCell


+ (instancetype)cellWithTableView:(UITableView *)tableView;


@property (strong, nonatomic) CZFriend *friendData;


@end

---------- CZFriendCell.m ----------

#import "CZFriendCell.h"


@implementation CZFriendCell


+ (instancetype)cellWithTableView:(UITableView *)tableView

{

    static NSString *ID = @"friend";

    CZFriendCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    if (cell == nil)

    {

        cell = [[CZFriendCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];

    }

    return cell;

}


- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self)

    {

        self.textLabel.font = [UIFont boldSystemFontOfSize:14];

    }

    return self;

}


- (void)setFriendData:(CZFriend *)friendData

{

    _friendData = friendData;

    self.imageView.image = [UIImage imageNamed:friendData.icon];

    self.textLabel.text = friendData.name;

    self.textLabel.textColor = friendData.vip ? [UIColor redColor] : [UIColor blackColor];

    self.detailTextLabel.text = friendData.intro;

}


@end


49.小项目:QQ好友列表 V部分

标签:

原文地址:http://www.cnblogs.com/lixiang2015/p/4722837.html

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