• tableview中头部信息


    //创建tableview中头部的文件
    #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] #import "ProfileHeaderView.h" #import "User.h" #import <QuartzCore/QuartzCore.h> #import "ASIHTTPRequest.h" #import "FriendController.h" #import "FollowerController.h" @interface ProfileHeaderView() { UIImageView *_icon; UILabel *_name; UILabel *_desc; UILabel *_status; UIButton *_friends; UIButton *_followers; } @end @implementation ProfileHeaderView #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:@"%@ %@", countTitle, title]; } #pragma mark 创建一个按钮 - (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 - 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:@"简介: %@", 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 - 生命周期方法 - (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]; } #pragma mark - ASI代理 - (void)requestFinished:(ASIHTTPRequest *)request { _icon.image = [UIImage imageWithData:[request responseData]]; } @end
    //  个人资料的头部
    
    #import <UIKit/UIKit.h>
    @class User;
    @protocol ASIHTTPRequestDelegate;
    @interface ProfileHeaderView : UIView <ASIHTTPRequestDelegate>
    @property (nonatomic, retain) User *user;
    @property (nonatomic, assign) UIViewController *controller;
    @end
  • 相关阅读:
    深入理解net core中的依赖注入、Singleton、Scoped、Transient(一)
    ActionDescriptorProviderContext
    IActionDescriptorProvider
    JWT签名算法中HS256和RS256有什么区别 转载
    JWT 使用的另一种声音
    JWT(Json Web Token):一种在Web应用中安全传递信息的规范 转载
    http 的session 工作原理。
    一般安全机制
    android 上传图片 .html 和android 客户端
    interpolator, typeEvaluator 以及属性动画的参数
  • 原文地址:https://www.cnblogs.com/gcb999/p/3151106.html
Copyright © 2020-2023  润新知