自定义带网络请求的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
- 自定义带网络请求的UITableView中tableHeaderView视图
- UITableView:改变 TableHeaderView 的高度
- UItableView 更改tableHeaderView的高度
- UITableView:改变 TableHeaderView 的高度
- UITableView:改变 TableHeaderView 的高度
- UITableView:改变 TableHeaderView 的高度
- 移除UITableView的tableHeaderView
- UITableView cell自定义视图中插入UITableView
- UITableView的tableHeaderView和viewForHeaderInSection區別
- iOS UITableView动态改变tableHeaderView的高度
- 72.UITableView:改变 TableHeaderView 的高度
- 使用autolayout设置UITableView的tableHeaderView
- UITableView.tableHeaderView遮挡cell的解决方法
- 让自定义视图拥有UISearchBar在UITableView上面自带的吸附效果
- 自定义TableHeaderView
- 关于设置 UITableView 的 tableHeaderView为使用了 SnapKit 约束的自定义 view 时出现的 BUG 的处理
- UITableView之tableHeaderView
- UITableView tableHeaderView touch
- 题目1040:Prime Number
- 设计模式---------装饰模式
- unity3d渲染通道的相关翻译知识
- Hive的安装与使用
- Project Server 2007发布项目时客户端进度为0,项目中心没有项目出现,解决方法小记
- 自定义带网络请求的UITableView中tableHeaderView视图
- poj 2063 基础完全背包
- Qt 控件使用
- ACM输入输出问题
- 什么是ORM
- 用Numpy扩充数组元素之repeat和tile
- 命令模式
- 编程那些事之HTTP协议
- 结构性通缩催生房价泡沫出现崩溃?