iOS-Swift-递归计算Cell高度
来源:互联网 发布:淘宝企业店铺的优势 编辑:程序博客网 时间:2024/05/17 02:42
前言
因为最近工作有需求要用到这个功能,但是我工程已经决定用OC写了,所以手痒写个swift版,本章博客用到很多上一篇博客的东西,还运用了一小步递归,所以有不明白的可以去看一看我的上一篇博客.
上代码
先创建一个plist写假数据
然后创建一个Cell
创建一个Model.swift写以下代码
import UIKitclass 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 UIKitclass 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
本人还是一只小菜鸡,不过是一只热心肠的菜鸡,如果有需要帮助或者代码中有更好的建议的话可以发邮件到lafree317@163.com中,我们一起进步XD
0 0
- iOS-Swift-递归计算Cell高度
- iOS cell 高度计算
- Swift iOS tableView static cell动态计算高度
- iOS 自动计算cell高度
- iOS开发动态计算cell的高度
- iOS开发动态计算cell的高度
- iOS开发动态计算cell的高度
- iOS开发动态计算cell的高度
- iOS开发动态计算cell的高度
- iOS学习之-Cell动态高度计算
- iOS开发动态计算cell的高度
- iOS开发动态计算cell的高度
- iOS开发动态计算cell的高度
- iOS开发动态计算cell的高度
- ios tableview 自动计算cell高度
- 动态计算cell高度
- 自动计算cell高度
- 计算cell的高度
- Linux多线程网络编程(一)
- Java和C++区别
- 【Cocos2d-x 3.x】 精灵帧缓存和纹理缓存
- 直接插入排序
- 将java程序做成可执行文件
- iOS-Swift-递归计算Cell高度
- Java finally语句到底是在return之前还是之后执行?
- shell排序
- write 操作文件注意事项
- “南大软院大神养成计划“_第二十一天的学习“
- Android Studio 设置内存大小及原理,优化运行速度
- JAVA设计模式之单例模式
- 直接选择排序
- 有向图(5)--一般化的有向图&&拓扑排序