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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!