swift 版本 UItableViewCell的動態(tài)高度補足

用swift的朋友們很多都是從ios8開發(fā)了,

其中針對table cell高度自動計算的 UITableViewAutomaticDimension 異常好用,但好像只對uilabel對象有效

當cell中內(nèi)容比較復雜,比如涉及圖文混排或加上其他動態(tài)高度的元素,自動高度就失效了

而swift的自動高度資料很少,就整了一個出來

首先是這個extension可以計算出string內(nèi)容的高度
extension String{

//MARK:獲得string內(nèi)容高度

  func stringHeightWith(fontSize:CGFloat,width: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內(nèi)各個元素的高度
//MARK: 計算cell的高度

func cellHeightByData(data:NSDictionary)->CGFloat{

var content=data.stringAttributeForKey("content")

var height=content.stringHeightWith(17,width: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方法中調(diào)用
func tableView(tableView:UITableView, heightForRowAtIndexPath indexPath:NSIndexPath) ->CGFloat{

  let data :JobLogsDataModel=tableData[indexPath.row] as JobLogsDataModel

  return cellHeightByString(data)

//return UITableViewAutomaticDimension

}

ok,收工

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,232評論 4 61
  • 算不算是小小罪孽 霧霾彌天的早晨,我重新變得 輕盈又自如 ...
    文留閱讀 237評論 1 1
  • 我是小灰,是一只母狗。我生過兩胎孩子,但是我已經(jīng)記不清他們長什么樣子了。在我生下它們以后,我的主人就將它們送給別人...
    酒十三閱讀 826評論 6 9
  • 家長大學堂系列課程 (上午9點至11點) 免費公開課(兩講): 1、 愛需要距離 親密需要界限(2016年8月14...
    小旅閱讀 496評論 0 0
  • (一)心衰病人能不能運動? 昨天王大夫告訴我,有個心衰病人又去看了某知名心臟專科醫(yī)院的一位老專家,老專家告訴他心衰...
    協(xié)和康復劉淑芬閱讀 4,098評論 0 1