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:@"%@\n%@", 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:@"简介:\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 - 生命周期方法 - (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

 

转载于:https://www.cnblogs.com/gcb999/p/3151106.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值