UI基础__类似QQ好友列表制作
来源:互联网 发布:c语言 面向过程 编辑:程序博客网 时间:2024/05/22 07:57
实现思路:
1.获取数据源,把数据字典转模型
2.创建cell 添加自定义的创建cell的类(继承自UITableViewCell)
3.创建headerView
+ (instancetype) headerView:(UITableView *)tableView { HMHeaderView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"qq"]; if (headerView == nil) { //创建 headerView = [[HMHeaderView alloc] initWithReuseIdentifier:@"qq"]; } return headerView;}//重写创建headerView的方法- (instancetype) initWithReuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithReuseIdentifier:reuseIdentifier]; if (self) { //添加子控件 UIButton *nameview=[[UIButton alloc] init]; self.nameview=nameview; [nameview setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; //内容左对齐 nameview.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft; [self.contentView addSubview:nameview]; //设置小图标 [self.nameview setImage:[UIImage imageNamed:@"buddy_header_arrow"] forState:UIControlStateNormal]; //设置按钮的背景 [self.nameview setBackgroundImage:[UIImage imageNamed:@"buddy_header_bg"] forState:UIControlStateNormal]; [self.nameview setBackgroundImage:[UIImage imageNamed:@"buddy_header_bg_highlighted"] forState:UIControlStateHighlighted]; //设置按钮的小图标的旋转方式--围绕图标的中心旋转 self.nameview.imageView.contentMode=UIViewContentModeCenter; //设置按钮的图标如果超出图标的原始尺寸范围,也不会进行裁切 self.nameview.imageView.clipsToBounds=NO; //设置按钮的内容左边内间距 nameview.contentEdgeInsets=UIEdgeInsetsMake(0, 10, 0, 0); //绑定事件 [nameview addTarget:self action:@selector(headerViewBtnDidClick) forControlEvents:UIControlEventTouchUpInside]; UILabel *numberView=[[UILabel alloc] init]; //设置按钮的文本的左间距 nameview.titleEdgeInsets=UIEdgeInsetsMake(0, 10, 0, 0); self.numberView=numberView; //设置对齐 numberView.textAlignment=NSTextAlignmentRight; [self.contentView addSubview:numberView]; } return self;}//按钮被点击的时候调用这个方法进行处理- (void)headerViewBtnDidClick{ //1.展开或者合并 self.fg.isExpand=!self.fg.isExpand; //调用代理方法 if ([self.delegate respondsToSelector:@selector(HeaderViewBtnDidClick:)]) { [self.delegate HeaderViewBtnDidClick:self]; }}//设置子控件的frame值- (void)layoutSubviews{ [super layoutSubviews]; //设置按钮的Frame,它与当前headerView坐标大小一致 self.nameview.frame=self.bounds; //设置label的frame self.numberView.frame=CGRectMake(250, 10, 110, 20);}//当将一个控件添加到它的父容器的时候会调用这个方法- (void)willMoveToSuperview:(UIView *)newSuperview{ [super willMoveToSuperview:newSuperview]; //2.旋转小图标 if (self.fg.isExpand==YES) { self.nameview.imageView.transform=CGAffineTransformMakeRotation(M_PI_2); } else { self.nameview.imageView.transform=CGAffineTransformMakeRotation(0); }}
在ViewController中需要注意的:
//为每一组的头部设置自定义view--UIView- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ HMHeaderView *headerView=[HMHeaderView headerView:tableView]; headerView.tag=section; //指定代理 headerView.delegate=self; //赋值 headerView.fg=self.friendGroups[section]; return headerView;}//实现代理方法-(void)HeaderbtnDidClick:(XYheaderCell *)headCell{ //如果使用reloadData,数据不会新建,全部在缓存区里面拿,不会调用init方法, // [self.tableView reloadData]; NSIndexSet *set=[NSIndexSet indexSetWithIndex:[self.arr indexOfObject:headCell.data]]; [self.tableView reloadSections:set withRowAnimation:UITableViewRowAnimationFade];}//为实现图文混排的效果,设置button的图片选择Image//设置按钮的小图标的旋转方式--围绕图标的中心旋转self.nameview.imageView.contentMode=UIViewContentModeCenter;//设置按钮的图标如果超出图标的原始尺寸范围,也不会进行裁切self.nameview.imageView.clipsToBounds=NO;//设置按钮的内容左边内间距nameview.contentEdgeInsets=UIEdgeInsetsMake(0, 10, 0, 0);//添加点击的绑定事件//当将一个控件添加到它的父容器的时候会调用这个方法- (void)willMoveToSuperview:(UIView *)newSuperview{ [super willMoveToSuperview:newSuperview]; //2.旋转小图标 if (self.fg.isExpand==YES) { self.nameview.imageView.transform=CGAffineTransformMakeRotation(M_PI_2); } else { self.nameview.imageView.transform=CGAffineTransformMakeRotation(0); }}
0 0
- UI基础__类似QQ好友列表制作
- Qt制作QQ好友列表
- Qt制作QQ好友列表
- 用ExpandableListView实现类似QQ好友列表
- 用ExpandableListView实现类似QQ好友列表
- 用ExpandableListView实现类似QQ好友列表
- 用ExpandableListView实现类似QQ好友列表
- 自定义UITableViewCell,实现类似QQ好友列表
- 用ExpandableListView实现类似QQ好友列表
- 用ExpandableListView实现类似QQ好友列表
- Qt实现类似QQ好友列表
- UI基础第十四弹:使用UItableview完成一个简单的QQ好友列表(一)
- UI基础第十四弹:使用UItableview完成一个简单的QQ好友列表(一)
- 做类似QQ好友列表一样的菜单栏
- Android初级教程_用ExpandableListView实现类似QQ好友列表
- Android初级教程_用ExpandableListView实现类似QQ好友列表
- ExpandableListView的使用,实现类似QQ好友列表
- 猫猫学IOS(十九)UI之QQ好友列表
- vs2012 c# winform installshield 打包
- sklearn 常用api(二)
- stm32f432位计数器计数
- 入门VR游戏开发者在Unreal Engine 4上开始VR设计所需要知道的
- 整理下 Intent 中文API
- UI基础__类似QQ好友列表制作
- 模拟语音加密的置乱技术简介
- lsof 查看打开文件状态
- iOS笔记
- 深度学习文献阅读笔记(6)
- 做网站:myeclipse+tomcat+mysql环境搭建
- C语言实现封装、继承和多态
- Sumsets(递推)
- 使用Eclipse一点心得