美文网首页
cell的自定义高度

cell的自定义高度

作者: 下页天 | 来源:发表于2016-08-27 13:28 被阅读19次
    cell的自定义高度有两种方式,第一种也是最方便的利用利用系统方法计算出高度
        提供一种计算文本宽高的方法
    这是一个自写函数,核心是--**NSString的实例方法**--使用了系统的boundingRectWithSize:CGSizeMake(width,height) optins:() attributes:()context:方法这个方法
    需要我们提供固定的一个宽度或者一个高度,
    如果宽度设置为MaxFloat,高度给定,则最后计算出一个CGRect会根据内容content计算出相应的宽度。
    同样,如果高度设置为MaxFloat,最后会计算出一个CGRect,其高度是根据content计算出的
    
    • 一般我们在模型的内部定义一个height属性用来给cell返回高度,把cell高度的计算放在了模型的里面,但是要先设置tableView estimatedHeightForRowAtIndexPath属性,设置这个属性后cell会先生成model,然后去获取高度,使用这个方法注意点

    • options:这个参数比较重要

        1.NSStringDrawingUsesLineFragmentOrigin:绘制文本时使用 line fragement origin 而不是 baseline origin。
        2.NSStringDrawingUsesFontLeading:计算行高时使用行距。(字体大小+行间距=行距)
        3.NSStringDrawingTruncatesLastVisibleLine:如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。如果没有指定NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略。
        4.计算布局时使用图元字形(而不是印刷字体)。Use the image glyph bounds (instead of the typographic bounds) when computing layout.
      
    • attributes:文本属性

        一个字典,里面包含了文字的各种属性
        (2)NSFontAttributeName : [UIFont systemFontOfSize:_fontSize] 设置字体
        (3)NSForegroundColorAttributeName :[UIColor redColor] 设置文字颜色
        (4)NSParagraphStyleAttributeName : paragraph 设置段落样式
        (5)NSMutableParagraphStyle *paragraph=[[NSMutableParagraphStyle alloc] init];
        paragraph.alignment = NSTextAlignmentCenter;
        (6)NSBackgroundColorAttributeName: [UIColor blackColor] 设置背景颜色
        (7)NSStrokeColorAttributeName设置文字描边颜色,需要和NSStrokeWidthAttributeName设置描边宽度,这样就能使文字空心.
        context:一般传 nil 。
    

    第二种方式是利用layout的自动收缩来计算cell的高度

        在cell接受到model以后开始布局子控件是我们可以利用           CGRectGetMaxY(self.contentLabel.frame)获得此时布局好的高度
        但是在他之前一定记得加self.layoutIfNeeded(),因为cell刚拿到数据没有还没有进行布局,想要布局必须先进行刷新布局self.layoutIfNeeded(),刷新过后把高度返给model.height,在外面显示数据,这种方法比较简单但是不建议使用,坑比较多,第二种方式有bug,如果对源码感兴趣---滴滴我
    

    第二种方式求出的高度必须刷新一下才能正常......不明白为啥

    相关文章

      网友评论

          本文标题:cell的自定义高度

          本文链接:https://www.haomeiwen.com/subject/jzxtettx.html