UITableViewCell自定义--代码自定义 和 xib自定义
来源:互联网 发布:js 引用类型 堆 栈 编辑:程序博客网 时间:2024/06/05 01:12
自定义cell:可以手动也可以使用xib布局。
当我们的每一行cell的内容不一样,会有变化时,例如微信的朋友圈,可以配图,也可以不配图,所以这个配图的UIImageView的frame就不一样。(因为hidden属性是会占空间的),这时我们使用代码自定义cell。
当每一行cell的格式固定,不存在变化时,使用xib自定义cell就更加便捷了。
- (void)awakeFromNib
{
// Initialization code
//这个方法是在 xib上的控件加载完成后,调用的一个方法,在这个方法中,我们可以重新设置控件的属性,或者添加控件到cell的contentView上。利用这个方法,可以实现xib和代码两种相结合的方式自定义cell
}
使用XIB自定义Cell时,创建cell:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
staticNSString * idn=@"AZFirstTableViewCell";//必须与xib中的标示符一致
static BOOL isRegistr=NO;
if (!isRegistr) {
//在UITableView中注册自定义UITableViewCell(xib)
UINib *nib=[UINibnibWithNibName:@"AZFirstTableViewCell"bundle:nil];
[tableView registerNib:nibforCellReuseIdentifier:idn];
isRegistr=YES;
}
//自定义cell的复用
AZFirstTableViewCell *cell=[tableViewdequeueReusableCellWithIdentifier:idn];
AZAppModel *app=self.cellArray[indexPath.row];
cell.iconImageView.image=[UIImageimageNamed:app.icon];
cell.nameLabel.text=[NSStringstringWithFormat:@"%d%@",indexPath.row,app.name];
cell.testLabel.text=@"ok";
代码自定义cell:
思路:
01 重写 - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)reuseIdentifier这个方法,然后在其中创建UI控件(先不指定frame),指明每个控件的tag值,添加到tablecell的contentView上。
02 定义一个setCellFrame的接口,利用tag值查找到每个UI控件,然后根据传入的model(比如是否有配图),来确定每个控件的frame。
#import "AZMyTableViewCell.h"
#define ICONTAG 10
#define NAMETAG 11
#define CONTENTTAG 12
#define PICTURETAG 13
@implementation AZMyTableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [superinitWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
UIImageView *icon=[[UIImageViewalloc] init];
icon.tag=ICONTAG;
[self.contentViewaddSubview:icon];
UILabel *nameLabel=[[UILabelalloc] init];
nameLabel.tag=NAMETAG;
nameLabel.font=[UIFontsystemFontOfSize:15];
[self.contentViewaddSubview:nameLabel];
UILabel *contentLabel=[[UILabelalloc] init];
contentLabel.tag=CONTENTTAG;
contentLabel.numberOfLines=2;
contentLabel.font=[UIFontsystemFontOfSize:12];
[self.contentViewaddSubview:contentLabel];
UIImageView *picture=[[UIImageViewalloc] init];
picture.tag=PICTURETAG;
[self.contentViewaddSubview:picture];
}
returnself;
}
-(void)cellFrame:(AZWeiBo *)weiBo
{
UIImageView *icon=(UIImageView *)[self.contentViewviewWithTag:ICONTAG];
icon.frame=CGRectMake(2,2, 40, 40);
UILabel *nameLael=(UILabel *)[self.contentViewviewWithTag:NAMETAG];
nameLael.frame=CGRectMake(45,2, 150, 20);
UILabel *contentLabel=(UILabel *)[self.contentViewviewWithTag:CONTENTTAG];
contentLabel.frame=CGRectMake(45,25, 200, 40);
UIImageView *picture=(UIImageView *)[self.contentViewviewWithTag:PICTURETAG];
if (weiBo.picture==nil) {
picture.hidden=YES;
self.cellHight=60;
}
else{
picture.hidden=NO;
picture.frame=CGRectMake(45,70, 60, 60);
self.cellHight=132;
}
}
-(void)setWeiBo:(AZWeiBo *)weiBo
{
UIImageView *icon=(UIImageView *)[self.contentViewviewWithTag:ICONTAG];
icon.image=[UIImageimageNamed:[NSStringstringWithFormat:@"%@",weiBo.icon]];
UILabel *nameLael=(UILabel *)[self.contentViewviewWithTag:NAMETAG];
nameLael.text=weiBo.name;
UILabel *contentLabel=(UILabel *)[self.contentViewviewWithTag:CONTENTTAG];
contentLabel.text=weiBo.content;
UIImageView *picture=(UIImageView *)[self.contentViewviewWithTag:PICTURETAG];
if (weiBo.picture!=nil)
{
picture.hidden=NO;
picture.image=[UIImageimageNamed:[NSStringstringWithFormat:@"%@",weiBo.picture]];
}
}
- (void)awakeFromNib
{
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[supersetSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
- UITableViewCell自定义--代码自定义 和 xib自定义
- 手写代码自定义UITableViewCell和XIB自定义UITableViewCell
- 自定义uitableviewcell xib
- 使用Xib自定义UITableViewCell
- 如何用.xib 自定义UITableViewCell
- 使用xib文件自定义UItableViewCell
- 用.xib文件自定义UITableViewCell
- 如何使用xib自定义UITableViewCell
- 代码自定义UITableViewCell
- 纯代码自定义UITableViewCell
- 自定义UITableViewCell初始化代码
- 自定义UIView和自定义UITableViewCell
- xib 自定义UITableViewCell 位置滑动错乱解决
- 通过xib和代码自定义cell
- UITableViewCell自定义和重用
- 如何使用xib自定义UITableViewCell xib文件的创建和添加控件
- 自定义UITableViewCell
- 自定义UITableViewCell
- GIT和SVN之间的区别及基本操作对比
- BZOJ 3754 Tree之最小方差树 解题报告
- ICP in PCL
- MySql_如何在PHP或Java中声明MySQL自定义变量
- Socket的简单实现
- UITableViewCell自定义--代码自定义 和 xib自定义
- ceph与OpenStack整合
- ceph存储 centos上搭建Ceph集群--Best
- slackware软件自动安转工具
- java的poi技术读取和导入Excel
- 模态框,引导页制作(CSS,js)
- 地址空间、内核空间、IO地址空间
- android 开发之文件下载
- visio画组织结构图