zoukankan      html  css  js  c++  java
  • 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
    
    }
  • 相关阅读:
    CF 436D 最小生成树
    HDU 1847 博弈
    ZOJ 3666 博弈 SG函数
    zoj3675 BFS+状态压缩
    HDU 4734 F(x) 数位DP
    HDU 3709 Balanced Number 数位DP
    HDU 3555 数位DP
    HDU 4336 Card Collector
    HDU4340 Capturing a country DP
    CF 351A
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5607328.html
Copyright © 2011-2022 走看看