现在的位置: 首页 > 综合 > 正文

【iOS开发-64】微博案例练习:用代码自定义cell,主要内容是针对不同高度的cell

2017年03月20日 ⁄ 综合 ⁄ 共 1069字 ⁄ 字号 评论关闭

(1)效果

(2)源代码和素材下载

http://download.csdn.net/detail/wsb200514/8089727

(3)总结

——可以利用xib布局cell,但是这种情况的cell时固定高度

——如果每个cell是不同高度,则需要用到代码,核心思想是根据cell里面子控件的高度计算这个cell的高度

——这里面用到的知识点之一,计算一段文字所占据的高宽,就是确定文字大小,文字宽度之后,可以利用一个方法计算出这段文字的宽高,当然这个方法返回的东西很多,size只是其中之一的属性。

    CGSize nameMaxSize=CGSizeMake(MAXFLOAT, MAXFLOAT);
    NSDictionary *nameAttr=@{NSFontAttributeName:[UIFont systemFontOfSize:14]};
    CGSize nameSize=[self.status.name boundingRectWithSize:nameMaxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:nameAttr context:nil].size;

——知识点之二,因为这个项目一打开的主页就是一个滚动的视图也就是一个tableView,所以我们可以删除项目原先的ViewController,创建一个tableViewController作为主入口。把这个控制器作为主入口的设置是:is Initial View Controller,打钩即可。(删除这个控制器自带的cell)

——知识点之三,还是封装。模型、视图、控制器各司其职。

——对于只提供外界访问的变量,即只有getter的那些变量,在@property时候增加一个readonly,防止被其他人修改。

——plist里面的number类型数据的1和0,可以被直接转换成BOOL 的0和1。

——修改cell高度的除了直接用tableView.cellHeight这个属性之外,还有一个代理方法,就是本例中用到的方法。

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

}

——对于部分控件,如果有的话就显示,如果没有就隐藏,这里面hidden属性至关重要,而且hidden的YES和NO最好是成对出现。因为这些cell会被放入缓存池,再次取出来使用的时候如果没有判断是否显示则会出错。

抱歉!评论已关闭.