自定义带网络请求的UITableView中tableHeaderView视图

来源:互联网 发布:梦龙网络计划软件win8 编辑:程序博客网 时间:2024/04/28 07:17

接口文件

#import <UIKit/UIKit.h>@class User;@protocol ASIHTTPRequestDelegate;@interface ProfileHeaderView : UIView <ASIHTTPRequestDelegate>@property (nonatomic, retain) User *user;@property (nonatomic, assign) UIViewController *controller;@end



实现文件

#import "ProfileHeaderView.h"#import "User.h"#import <QuartzCore/QuartzCore.h>#import "ASIHTTPRequest.h"#import "FriendController.h"#import "FollowerController.h"//宏定义常量#define kPadding 10#define kIconWidth 100#define kIconHeight 100#define kCountButtonHeight 35#define kCountSize 12#define kCountButtonWidth 55#define kNameSize 15#define kDescSize 10#define kBtnFriend 1#define kBtnFollower 2#define kGlobalBg [UIColor colorWithRed:0.95 green:0.95 blue:0.95 alpha:1]@interface ProfileHeaderView (){    UIImageView *_icon;    UILabel *_name;    UILabel *_desc;    UILabel *_status;        UIButton *_friends;    UIButton *_followers;}@end@implementation ProfileHeaderView- (id)init{    if (self = [super init])    {        CGSize winSize = [UIScreen mainScreen].bounds.size;        //顶部        UIImageView *topView = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, winSize.width, kIconHeight + 2 * kPadding)] autorelease];        topView.image = [UIImage imageNamed:@"profile_cover_background.png"];        [self addSubview:topView];                //头像        CGFloat iconX = kPadding;        CGFloat iconY = kPadding;        _icon = [[[UIImageView alloc] initWithFrame:CGRectMake(iconX, iconY, kIconWidth, kIconHeight)] autorelease];        _icon.image = [UIImage imageNamed:@"avatar_default_big.png"];        _icon.layer.cornerRadius = 5;        _icon.layer.masksToBounds = YES;        [topView addSubview:_icon];                //昵称        CGFloat nameX = iconX + kIconWidth + kPadding;        CGFloat nameY = iconY;        CGFloat nameWidth = winSize.width - nameX - kPadding;        CGFloat nameHeight = kNameSize;        _name = [[[UILabel alloc] init] autorelease];        _name.frame = CGRectMake(nameX, nameY, nameWidth, nameHeight);        _name.backgroundColor = [UIColor clearColor];        _name.font = [UIFont systemFontOfSize:kNameSize];        [topView addSubview:_name];                //简介        CGFloat descX = nameX;        CGFloat descY = nameY + nameHeight + kPadding;        CGFloat descWidth = nameWidth;        CGFloat descheight = kIconHeight - descY;        _desc = [[[UILabel alloc] init] autorelease];        _desc.frame = CGRectMake(descX, descY, descWidth, descheight);        _desc.font = [UIFont systemFontOfSize:kDescSize];        _desc.backgroundColor = [UIColor clearColor];        _desc.numberOfLines = 0;        _desc.textColor = [UIColor whiteColor];        [topView addSubview:_desc];                //数目        CGFloat countViewY = topView.frame.size.height;        CGFloat countViewHeight = kCountButtonHeight + 2*kPadding;        UIView *countView = [[[UIView alloc] initWithFrame:CGRectMake(0, countViewY, winSize.width, countViewHeight)] autorelease];        countView.backgroundColor = [UIColor colorWithRed:0.95 green:0.95 blue:0.95 alpha:1];        [self addSubview:countView];                //关注        CGFloat friendsX = kPadding;        CGFloat friendsY = kPadding;        _friends = [self buttonWithSelector:@selector(btnClick:) x:friendsX y:friendsY];        _friends.tag = kBtnFriend;        [countView addSubview:_friends];                //粉丝        CGFloat followersX = friendsX + kCountButtonWidth + kPadding;        CGFloat followersY = friendsY;        _followers = [self buttonWithSelector:@selector(btnClick:) x:followersX y:followersY];        _followers.tag = kBtnFollower;        [countView addSubview:_followers];                //顶部的线        CGFloat bottomHeight = 2;        UIView *bottom = [[[UIView alloc] initWithFrame:CGRectMake(0, countViewHeight - bottomHeight, winSize.width, bottomHeight)] autorelease];        bottom.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"profile_shadow_bottom.png"]];        [countView addSubview:bottom];                //微博数        CGFloat statusX = 0;        CGFloat statusY = countViewY + countViewHeight + 2;        CGFloat statusHeight = kCountSize + kPadding;        _status = [[[UILabel alloc] init] autorelease];        _status.backgroundColor = kGlobalBg;        _status.frame = CGRectMake(statusX, statusY, winSize.width, statusHeight);        _status.font = [UIFont systemFontOfSize:kCountSize];        [self addSubview:_status];                self.frame = CGRectMake(0, 0, winSize.width, statusY + statusHeight);    }    return self;}- (void)dealloc{    [_user release];    [super dealloc];}- (UIButton *)buttonWithSelector:(SEL)selector x:(CGFloat)x y:(CGFloat)y{    UIButton *button = [[[UIButton alloc] initWithFrame:CGRectMake(x, y, kCountButtonWidth, kCountButtonHeight)] autorelease];    button.titleLabel.font = [UIFont systemFontOfSize:kCountSize];    [button addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];    button.titleLabel.numberOfLines = 0;    button.titleLabel.textAlignment = NSTextAlignmentCenter;    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];    [button setBackgroundImage:[UIImage resizeImage:@"skin_cell_background.png"] forState:UIControlStateNormal];    [button setBackgroundImage:[UIImage resizeImage:@"skin_cell_background_highlighted.png"] forState:UIControlStateHighlighted];    [button setBackgroundImage:[UIImage resizeImage:@"skin_cell_background_highlighted.png"] forState:UIControlStateDisabled];    return button;}#pragma mark -监听按钮点击- (void)btnClick:(UIButton *)btn{    FriendshipController *vc = nil;    if (btn.tag == kBtnFollower)    {        //粉丝        vc = [[[FollowerController alloc] init] autorelease];        vc.title = [NSString stringWithFormat:@"%@的粉丝", self.user.screenName];    }    else    {        //关注        vc = [[[FriendController alloc] init] autorelease];        vc.title = [NSString stringWithFormat:@"%@的关注", self.user.screenName];    }    vc.uid = self.user.uid;    [self.controller.navigationController pushViewController:vc animated:YES];}#pragma mark -返回数目按钮的文字- (NSString *)countText:(int)count title:(NSString *)title{    NSString *countTitle = nil;    if (count < 10000)    {        countTitle = [NSString stringWithFormat:@"%i", count];    }    else    {        CGFloat countValue = count / 10000.0;        countTitle = [NSString stringWithFormat:(countValue >= 100 ? @"%.0f万" : @"%.1f万"), countValue];    }        return [NSString stringWithFormat:@"%@\n%@", countTitle, title];}#pragma mark - user的setter- (void)setUser:(User *)user{    if (_user != user)    {        [_user release];        _user = [user retain];                //下载图片        ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:user.avatarLarge]];        request.delegate = self;        [request startAsynchronous];                //设置名称        _name.text = user.screenName;                //设置简介        NSString *descText = (user.descs == nil || [@"" isEqualToString:user.descs]) ? @"这个人比较懒,什么也没写" : [NSString stringWithFormat:@"简介:\n%@", user.descs];        _desc.text = descText;                //设置数目        [_friends setTitle:[self countText:user.friendsCount title:@"关注"] forState:UIControlStateNormal];        [_followers setTitle:[self countText:user.followersCount title:@"粉丝"] forState:UIControlStateNormal];                //微博数量        _status.text = [NSString stringWithFormat:@" 共%i条微博", user.statusesCount];    }}#pragma mark - ASI代理- (void)requestFinished:(ASIHTTPRequest *)request{    _icon.image = [UIImage imageWithData:[request responseData]];}@end



0 0
原创粉丝点击