• swift 版本 UItableViewCell的动态高度补足


    用swift的朋友们很多都是从ios8开发了,

    其中针对table cell高度自动计算的 UITableViewAutomaticDimension 异常好用,但好像只对uilabel对象有效

       当cell中内容比较复杂,比如涉及图文混排或加上其他动态高度的元素,自动高度就失效了

    而swift的自动高度资料很少,就整了一个出来

    首先是这个extension可以计算出string内容的高度
    extension String{
    
    //MARK:获得string内容高度
    
      func stringHeightWith(fontSize:CGFloat,CGFloat)->CGFloat{
    
        let font =UIFont.systemFontOfSize(fontSize)
    
        let size =CGSizeMake(width,CGFloat.max)
    
        let paragraphStyle =NSMutableParagraphStyle()
    
        paragraphStyle.lineBreakMode= .ByWordWrapping;
    
        let attributes = [NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy()]
    
        let text =selfasNSString
    
        let rect = text.boundingRectWithSize(size, options:.UsesLineFragmentOrigin, attributes: attributes, context:nil)
    
        return rect.size.height
    
      }//funcstringHeightWith
    
    }//extension end
    然后可以用这个方法计算cell内各个元素的高度
    //MARK: 计算cell的高度
    
    func cellHeightByData(data:NSDictionary)->CGFloat{
    
    var content=data.stringAttributeForKey("content")
    
    var height=content.stringHeightWith(17,300)
    
    var imgSrc=data.stringAttributeForKey("image") as NSString
    
    ifimgSrc.length==0
    
    {
    
    return59.0+height+40.0
    
    }
    
    return59.0+height+5.0+112.0+40.0
    
    }
    最后在uitable的heightForRowAtIndexPath方法中调用
    func tableView(tableView:UITableView, heightForRowAtIndexPath indexPath:NSIndexPath) ->CGFloat{
    
      let data :JobLogsDataModel=tableData[indexPath.row] as JobLogsDataModel
    
      return cellHeightByString(data)
    
    //return UITableViewAutomaticDimension
    
    }
  • 相关阅读:
    shell脚本
    vim使用快捷键
    logback.xml_appender配置
    vim配置文件
    sed
    使用linux服务器安装wordpress博客详细教程
    JDBC为什么要使用PreparedStatement而不是Statement
    Jsp技术介绍
    jsp的appilication.getInitParameter()方法无法获取到值的问题
    ubuntu 插网线无法上网解决方案
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5607328.html
Copyright © 2020-2023  润新知