首页 > 代码库 > 英雄展示
英雄展示
//LOL英雄展示
#import "SKUIViewController"
import "hero.h"
@interface SKUIViewController()<UITableViewDataSource,UITableViewdelegate>
@property(nonatomic,strong)NSArray *heros;
@property(nonatomic,weak)IBOutlet UITableView *tableview;
@end
@implementation SKUIViewController
-(void)viewDidLoad
{
[super viewDidLoad];
//设置行高,默认是44,如果每行高度都一样的话,可通过这个属性设置,否则使用代理
self.tableView.rowHeight=50;
self.tableView.delegate=self;
//分割线的颜色
self.tableView.separatorColor=[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:255/255.0];
//分割线类型
self.tableView.sepatatorStyle=UITableViewCellSperatorStyleSingleLine;
//表格的头部控件(直接显示表格的最顶部)
self.tableView.tableHeaderView=[UIButton buttonWithType:];
//表格的尾部控件(例如更多...微博的加载)
self.tableView.tableFooterView=[[UISwitch alloc]init];
}
-(NSArray *)heros;
{
if(_heros==nil)
{
//获得plist的全路径
NSString *path=[[NSBundle mainBundle] pathForResource:@"heros.plist" ofType:nil];
//加载数组
NSArray *dictArray=[NSArray arrayWithContentOfFile;path];
//将dictArray里面所有的字典转成模型对象,放到新的数组里面去
NSMutableArray *heroArray=[NSMutableArray array];
for(NSDictionary *dict in dictArray)
{
//创建模型对象
SKHero *hero=[SKHero heroWithDictL:dict];
//添加模型对象到数组中去
[heroArray addObject:hero];
}
//赋值
_heros=heroArray;
}
return _heros;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numbersOfRowsInSection:(NSInteger)section
{
return self.heros.count;
}
性能优化
1.通过一个标识去缓存池中寻找可循环利用的cell
2.如果缓存池中找不到可循环利用的cell,则新建一个cell并给cell加上标示
3.给cell设置新的数据
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//sstatic修饰局部变量,可以保证局部变量只分配一次存储空间(只初始化一次)
static NSString *ID=@"A";
//1.通过一个标识符去缓存池中寻找可循环利用的cell
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"ID"];
if(cell==nil)
{
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ID"];
}
SKHero *hero=self.heros[indexPath.row];
cell.textLabel.text=hero.name;
cell.detailLabel.text=hero.intro;
cell.imageView.image=[UIImage imageNamed:hero.icon];
//设置cell的右边的标志,小箭头,在IOS中一般设置-》通用-》 可以让用户知道可以点下去还有东西
cell.accessorType=UITableViewAccessoryDisclosureIndicator;
//设置cell右边为控件,如开关,类似是否开启蜂窝网络那样
cell.accessorType=[[UISwitch alloc]init];
//设置默认背景颜色(背景view不用设置尺寸,backgroundView的优先级>backgroudColor,直接使用backgroundView)
UIView *bgView=[[UIView alloc]init];
bgView.backgroundColor=[UIColor redColor];
cell.backgroundView=bgView;
//设置被选择时背景
UIView *selectedView=[[UIView alloc]init];
selectedView.backgroundColor=[UIColor greenColor];
cell.selectedBackgroundView=selectedView;
return cell;
}
//每一行的高度不一致时,使用此方法设置行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//第一行设置为100,其余每行设置为60
if(indexPath==0)
return 100;
else
return 60;
}
@end
//文件:SKHero.h
import <Foundation/Foundation.h>
@interface SKHero:NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *icon;
@property(nonatomic,copy)NSString *intro;
+(instancetype)heroWithDict:(NSDictionary *)dict;
-(instancetype)heroWithDict:(NSDictionary *)dict;
@end
//文件:SKHero.m
import "SKHero"
@implementation SKHero
+(instancetype)heroWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDict:dict];
}
-(instancetype)heroWithDict:(NSDictionary *)dict
{
if(self=[super init])
{
[self setValueForkeysWithDictionary:dict];
}
return self;
}
@end
英雄展示