我们在使用uitableView的时候,一些简单的cell样式其实是不需要自定义的,但是系统的方法又似乎又无法满足需要,这时候我们就需要在系统上做一些改变来达到我们的需求;

像这种cell,简单分析下,一个textlabel,一个detailTextlabel,一个accview就可以实现。我们需要做的就是一些细节的处理;先上代码:

  1. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  2.  
  3. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])];
  4. if (!cell) {
  5. cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:NSStringFromClass([UITableViewCell class])];
  6. }
  7.  
  8. cell.textLabel.textColor = TextblackColor;
  9. cell.textLabel.font = [UIFont systemFontOfSize:[QDFontHelp Font:14]];
  10. if (indexPath.row == 0) {
  11. textString = @"现金分红(默认)";
  12. detailTextString = @"分红所得资金实时发放到钱包";
  13. }else{
  14. textString = @"红利再投资";
  15. detailTextString = @"分红所得资金直接用于购买该基金,将分红转为持有基金份额";
  16. }
  17.  
  18. cell.textLabel.text = textString;
  19. cell.detailTextLabel.text = detailTextString;
  20. cell.detailTextLabel.numberOfLines = 0;
  21. cell.detailTextLabel.font = [UIFont systemFontOfSize:[QDFontHelp Font:12]];
  22. [cell.textLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  23. make.left.equalTo(cell.mas_left).offset(WidthScale(15));
  24. make.top.equalTo(cell.mas_top).offset(HeightScale(5));
  25. }];
  26. [cell.detailTextLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  27. make.left.equalTo(cell.mas_left).offset(WidthScale(15));
  28. make.right.equalTo(cell.mas_right).offset(-WidthScale(100));
  29. make.top.equalTo(cell.textLabel.mas_bottom);
  30. }];
  31. cell.detailTextLabel.textColor = TextGrayColor;
  32. if (indexPath.row == self.fenghongType) {
  33. cell.accessoryType = UITableViewCellAccessoryCheckmark;
  34. }else{
  35. cell.accessoryType = UITableViewCellAccessoryNone;
  36. }
  37. cell.tintColor = APPThemeColor;
  38. return cell;
  39. }

  在这里,我们对系统的textlabel和detailtextlabel进行了重新布局,已避免系统根据我们给出的cell高度进行自动适应;

关于checkmark的颜色,我们可以通过cel的tintcolor来改变!

写到这里,那么我们如何动态返回cell的高度呢,这里我们根据label的内容来返回,代码如下

  1. -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
  2.  
  3. CGSize size1 = [textString boundingRectWithSize:CGSizeMake(kScreen_width - WidthScale(115), 1000)
    options:NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin
    attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:[QDFontHelp Font:14]]} context:nil].size;
  4. CGSize size2 = [detailTextString boundingRectWithSize:CGSizeMake(kScreen_width - WidthScale(115), 1000)
    options:NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin
    attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:[QDFontHelp Font:12]]} context:nil].size;
  5. return size1.height + size2.height + HeightScale(15);
  6.  
  7. }

  在ios7以后我们不再使用sizetofit来动态返回内容的高度  而使用boundingrect!当然这里还是有一点坑的,在具体使用的时候慢慢摸索吧!

uitableviewcell textlabel detailtextLabel 换行的位置及尺寸问题的更多相关文章

  1. JavaScript获取DOM元素位置和尺寸大小

      在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽略的一部分,要想写出预想效果的JavaScri ...

  2. IOS中调整UI控件位置和尺寸

    1.frame(修改位置和尺寸):以父控件左上角为坐标原点,在其父控件中的位置和尺寸. //frame属性中的坐标点不能直接修改 CGRect tempFrame = self.v.frame; // ...

  3. 获取DOM元素位置和尺寸大小

    JavaScript获取DOM元素位置和尺寸大小 在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽 ...

  4. jQuery 学习笔记(4)(文本值相关方法、操控CSS方法、位置和尺寸方法)

    1.文本值相关方法 .html() == .innerHTML $("div").html("<span> ...</span>") / ...

  5. DOM元素的位置、尺寸及更多的信息

    一.基本概念 document.documentElement是整个DOM树的根节点,对应的元素就是html.下面将其称作根元素或根节点. document.body,对应的元素是body 二.浏览器 ...

  6. Windows 系统上用 .NET/C# 查找所有窗口,并获得窗口的标题、位置、尺寸、最小化、可见性等各种状态

    原文:Windows 系统上用 .NET/C# 查找所有窗口,并获得窗口的标题.位置.尺寸.最小化.可见性等各种状态 在 Windows 应用开发中,如果需要操作其他的窗口,那么可以使用 EnumWi ...

  7. JS中关于位置和尺寸的api

    HTMLElement.offsetParent 由于offsetTop 和 offsetLeft 都是相对于 offsetParent 内边距边界的,故offsetParent的意义十分重大.off ...

  8. selenium相关:通过location 和 size 获取元素所在像素位置和尺寸,截取图片ROI

    1.实验 #https://captcha.luosimao.com/demo/ chrome default: location 不滚动,直接返回相对整个html的坐标 {'x': 15.0, 'y ...

  9. 原生JS获取元素的位置与尺寸

    1.内高度.内宽度: 内边距 + 内容框 element.clientWidth element.clientHeight 2.外高度,外宽度: 边框 + 内边距 + 内容框 element.offs ...

随机推荐

  1. 用原生js来处理跨域的数据(jsonp)

    说明总结: 1.ajax和jsonp其实本质上是不同的东西.ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提 ...

  2. Linux下的常用指令汇总

    内容提纲: 1.ubuntu安装 2.linux目录结构 3.apt.dpkg 4.date.cal.tzselect 5.修改密码.忘记密码 6.注销/重启/关机 7.cd pwd 8.-h --h ...

  3. mysql索引优化比普通查询速度快多少

    mysql索引优化比普通查询速度快多少 一.总结 一句话总结:普通查询全表查询,速度较慢,索引优化的话拿空间换时间,一针见血,所以速度要快很多. 索引优化快很多 空间换时间 1.软件层面优化数据库查询 ...

  4. phalcon的save方法保存失败?

    phalcon的save方法保存失败? 因为表中设置了一个字段:disabled, 默认值是1, 在创建数据的时候,disabled没有传值过去,导致save方法一直是false, 当返回false时 ...

  5. Lasso linear model实例 | Proliferation index | 评估单细胞的增殖指数

    背景:We developed a cell-cycle scoring approach that uses expression data to compute an index for ever ...

  6. 小程序for循环嵌套

    <view class='nocontnt' wx:if="{{listLength == 0 }}"> 暂无相关评论 </view> <view c ...

  7. php单例模式的使用场景,使用方法

    一个类只有一个对象实例 1.含义 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用. 2 ...

  8. xml的解构与组装

    xml的结构 <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName>< ...

  9. python基础之正则表达式 re模块

    内容梗概: 1. 正则表达式 2. re模块的使⽤ 3. 一堆练习正则表达式是对字符串串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤.使用正则的优缺点: 优点: 灵活,功能性强, ...

  10. Android BottomNavigationBar底部导航控制器的使用(包含默认postion的设置)

    转载请标明出处:http://blog.csdn.net/u010046908/article/details/50962081本文出自:[李东的博客] 最近Google在自己推出的Material ...