概述:本文是黑马程序员UI视频教程第九天,QQ好友列表案例的总结
该案例中主要涉及的知识点有:改变图片在UIButton中的平铺方式、UITableViewHeaderFooterView、设置按钮中图片和文本的内边距和对齐方式、tableView中按组进行重载、自定义delegate协议、layoutSubViews方法、巧妙传递用户的单击信息等内容
基本思路:
- 使用UITableviewController,拷贝素材、创建界面、字典转模型,懒加载
- 实现tableView的数据源方法
- 设置headerView
- 实现点击headerView箭头旋转效果
- 实现点击headerView好友列表展开效果
- 实现VIP会员名称显示为红色
最终效果如下:
1、拷贝素材、创建界面、字典转模型及懒加载
- 该案例中仅包含一个tableView,因此使用一个tableViewController开始将更方便。删除原来的viewController,创建新的tableViewController,然后使其成为初始控制器initial View。创建基于UITableViewController的子类,并将其挂在创建的tableViewController下。
- 注意该plist文件为字典嵌套字典的结构,因此字典转模型也需要分两层来写
2、实现TableView的数据源方法
-
指定tableView的Section,
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
-
指定tableView每个Section的行数,
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
-
指定tableView每行所使用的Cell,
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
从效果上看单元格的形式与subtitle形式的单元格基本一致,可以在代理方法内部使用标准subtitle形式的单元格并为内部控件赋值。但由于我们还要进行更多细节的调整,将单元格单独实现更有利于后续的改进,代码的可读性高。
因为每个单元格的形式基本一致,可以考虑使用xib文件来创建单元格
- 创建xib单元格
- 创建基于UITableViewCell的子类,并与xib文件进行挂接。该子类中应包含LJFriend成员(或者将LJFriend对象作为参数传递给创建单元格的类方法)
- 实现创建单元格的类方法,重写LJFriend成员的set方法。在set方法中根据是否是vip设置昵称的字体颜色是否为红色
#import <UIKit/UIKit.h> #import "LJFriend.h" @interface LJFriendCell : UITableViewCell @property(nonatomic , strong) LJFriend * friendCell_model; +(instancetype)friendCellWi