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
    
    }
  • 相关阅读:
    P2420 让我们异或吧(倍增)
    bzoj题目分类
    hash练习们
    bzoj1433[ZJOI2009]假期的宿舍(匈牙利)
    bzoj2427:[HAOI2010]软件安装(Tarjan+tree_dp)
    bzoj2730矿场搭建(Tarjan割点)
    codevs4511信息传递(Tarjan求环)
    进入js
    css层叠样式表
    HTML超文本标记语言
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5607328.html
Copyright © 2011-2022 走看看