iOS-Swift-自動計算cell高度
Swift-CalculateCellHight
iOS-Swift-自動計算cell高度
前言
因為最近工作有需求要用到這個功能,但是我工程已經決定用OC寫了,所以手癢寫個swift版,本章博客用到很多上一篇博客的東西,還運用了一小步遞歸,所以有不明白的可以去看一看我的上一篇博客.
上代碼
先創建一個plist寫假數據
然后創建一個Cell
創建一個Model.swift寫以下代碼
import UIKit class Model: NSObject { override func setValue(value: AnyObject?, forUndefinedKey key: String) { return; } // 傳入字符串計算行數 func PassStringReturnIndex(str:String)->Int { // 比較值 let rangeStr = "\n" // 比較 let range = str.rangeOfString(rangeStr) // 如果有結果 if range != nil { // 行數+1 line++ // 從比較結尾進行切割字符串 let str2 = str.substringFromIndex(range!.endIndex) // 遞歸調用函數 PassStringReturnIndex(str2) } return line } override func setValue(value: AnyObject?, forKey key: String) { super.setValue(value, forKey: key) // 當賦值Comment時計算行高 if key == "comment" { // plist里寫的\n都為\\n 這里替換成\n comment = (value as!String).stringByReplacingOccurrencesOfString("\\n", withString: "\n") // 調用計算行高函數 line = PassStringReturnIndex(comment) } } // 屬性 var title:String = "" var writer:String = "" var comment:String = "" var line:Int = 0 }
最后再ViewController.swift加入以下代碼:
import UIKit class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { @IBOutlet weak var tableView: UITableView! var modelArr:NSMutableArray = [] override func viewDidLoad() { super.viewDidLoad() // model賦值 loadModel() // 搭建tableView layoutTableView() } func layoutTableView(){ // 注冊Cell tableView.registerNib(UINib.init(nibName: "MyCell", bundle: nil), forCellReuseIdentifier: "abc") } func loadModel(){ // 從plist重給model賦值 let path = NSBundle.mainBundle().pathForResource("DataList", ofType: "plist") let dataArr = NSArray(contentsOfFile:path!) for d in dataArr! { // KVC let dic:Dictionary<String,String> = d as! Dictionary let model = Model() model.setValuesForKeysWithDictionary(dic) modelArr.addObject(model) } } func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { let model = modelArr[indexPath.row] as! Model return CGFloat(90 + model.line*20); } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1; } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10; } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("abc", forIndexPath: indexPath) as! MyCell let model = modelArr[indexPath.row] as! Model cell.titleLabel.text = model.title cell.writer.text = model.writer cell.commentLabel.text = model.comment return cell; } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
效果圖
github:https://github.com/Lafree317/Swift-CalculateCellHight
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!