(素材源码)猫猫学IOS(十七)UI之纯代码自定义Cell实现新浪微博U

猫猫分享,必须精品

素材代码地址: 原文地址:?viewmode=contents

先看效果图

编程思路代码创建Cell的步骤

1> 创建自定义Cell,继承自UITableViewCell 2> 根据需求,,确定控件,并定义属性 3> 用getter方法完成控件的实例化,只创建并添加到contentView,不处理位置 4> 定义一个模型属性,通过setter方法,设置cell的显示

昵称正文字符串的位置算法设置大小由文字的长度决定用字符串方法:[@”” boundingRectWithSize:(CGSize) options:(NSStringDrawingOptions) attributes:(NSDictionary *) context:(NSStringDrawingContext *)]*nameDict = @{NSFontAttributeName:kNameFont};boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:nameDict context:nil];计算行高的方法

要用到代理方法的:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

计算行高的方法,会在加载表格数据时,有多少行计算多少次 contentSize

问题:此方法执行的时候,cell还没有被实例化! 但是:行高计算是在实例化cell时,通过设置status属性,计算=》有了status模型,就可以知道行高 ! 问题:如何在cell实例化之前,获得行高? 解决方法:通过status可以计算得到行高! = 》再建立一个模型,专门计算所有控件的位置警告:原形单元格必须又一个可重用标示符的解决

警告:file:///Users/apple/Desktop/%E5%AD%A6%E4%B9%A0/%E4%BA%8C%E6%9C%9F%E5%AD%A6%E4%B9%A0/Day07/%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9AUI/%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9AUI/Base.lproj/Main.storyboard: warning: Unsupported Configuration: Prototype table cells must have reuse identifiers 警告:原形单元格必须又一个可重用标示符 解决办法是在Cell中的Identfier加入可重用标示符

然后一定要关联cell的class

——这两部可以用一行代码来代替

//为tableView注册可重用单元格[self.tableView registerClass:[NYStatusCell class] forCellReuseIdentifier:ID];

这时候我们注释

也可以运行了

在Storyboard中指定了可重用标示符,同时指定了Cell的类是NYStatusCell,系统会为tableView注册一个原形cell,专门用来做可重用单元格,一旦缓冲区不存在可重用单元格,系统会使用原形Cell新实例化一个Cell供程序使用!因此如果在Storyb中,注册了原形Cell,就不需要做 cell == nil 的判断了

注意:这些在iOS6之后才有的。

代码学习自定义cell纯代码写NYStatusCell//ps:新建iOS交流学习群:304570962可以加猫猫QQ:1764541256 或则微信znycat让我们一起努力学习吧。原文:http:()(nonatomic, strong) UIImageView *iconView;@property (nonatomic, strong) UILabel *nameView;@property (nonatomic, strong) UIImageView *vipView;@property (nonatomic, strong) UILabel *textView;@property (nonatomic, strong) UIImageView *pictureView;//3>用get方法完成控件的实例化,只创建并添加到contentView,不处理位置。-(UIImageView *)iconView{if (_iconView == nil) {_iconView = [[UIImageView alloc] init];[self.contentView addSubview:_iconView];}return _iconView;}-(UILabel *)nameView{if (_nameView == nil) {_nameView = [[UILabel alloc] init];//默认字体是17号,改成kNameFont_nameView.font = kNameFont;[self.contentView addSubview:_nameView];}return _nameView;}-(UIImageView *)vipView{if (_vipView == nil) {_vipView = [[UIImageView alloc] init];[self.contentView addSubview:_vipView];}return _vipView;}-(UILabel *)textView{if (_textView == nil) {_textView = [[UILabel alloc] init];_textView.font = kTextFont;_textView.numberOfLines = 0;//让他可以换行[self.contentView addSubview:_textView];}return _textView;}-(UIImageView *)pictureView{if (_pictureView == nil) {_pictureView = [[UIImageView alloc] init];[self.contentView addSubview:_pictureView];}return _pictureView;}-(void)setStatusFrame:(NYStatusFrame *)statusFrame{_statusFrame = statusFrame;//1>设置数据[self settingData];//2>设置位置[self settingFrame];}/**设置数据*/-(void)settingData{NYStatus *status = ;= [UIImage imageNamed:status.icon];= status.name;//vipif (status.vip) {= [UIImage imageNamed:@”vip”];}= status.text;> 0) {= YES;= [UIImage imageNamed:status.picture];}= NO;}/**设置位置*/-(void)settingFrame{= ;= ;= ;= ;= ;}@end类结构

这个小项目主要由这些类组成

出门走好路,出口说好话,出手做好事。

(素材源码)猫猫学IOS(十七)UI之纯代码自定义Cell实现新浪微博U

相关文章:

你感兴趣的文章:

标签云: