博客> swift cell高度自适应
swift cell高度自适应
2017-06-27 11:41 评论:1 阅读:1608 vipsamuel
cell swift height

1.导入SnapKit框架

import UIKit class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {

 var tableView = UITableView()
//点击展开、合并
var dict: Dictionary<String> = [:]
var textValue: NSString = "我是一个UILabel()\n我是一个UILabel()\n我是一个UILabel()\n我是一个   UILabel()\n我是一个UILabel()\n我是一个UILabel()\n我是一个UILabel()\n我是一个UILabel()\n"
override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self
    //取消掉分割线
    tableView.tableFooterView = UIView()
    self.view.addSubview(tableView)
    tableView.snp_makeConstraints { (make) in
        make.edges.equalTo(self.view)
    }
    //SnapKit无效
    tableView.estimatedRowHeight = 60
    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.registerClass(TestTableViewCell.self, forCellReuseIdentifier: "testCell")
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 100
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("testCell", forIndexPath: indexPath) as! TestTableViewCell
    cell.initCell(textValue as String)
    if dict[String(indexPath.row)] == "0" {
        cell.label.numberOfLines = 0
    } else {
        cell.label.numberOfLines = 1
    }
    print(dict)
    return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        let cell = tableView.cellForRowAtIndexPath(indexPath)
        let label = cell?.contentView.viewWithTag(1000) as! UILabel
        //点击展开、合并
        tableView.beginUpdates()
        if label.numberOfLines == 0 {
            label.numberOfLines = 1
            dict[String(indexPath.row)] = "1"
        } else {
            label.numberOfLines = 0
            dict[String(indexPath.row)] = "0"
        }
        print(dict)
        tableView.endUpdates()
    }

}

// MARK: - 分割线顶头 extension ViewController {

//实现方法
override func viewDidLayoutSubviews() {
    self.tableView.separatorInset = UIEdgeInsetsZero
    self.tableView.layoutMargins = UIEdgeInsetsZero
}
//回调 cell回调 滚动屏幕cell将要显示的时候调用
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath     indexPath: NSIndexPath) {
    cell.separatorInset = UIEdgeInsetsZero
    cell.layoutMargins = UIEdgeInsetsZero
}

}

import UIKit class TestTableViewCell: UITableViewCell {

var label = UILabel()
override func awakeFromNib() {
    super.awakeFromNib()
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}

func initCell(value: String){
    self.contentView.addSubview(label)

    //自动算cell高度只设置左、上、下、宽
    label.snp_makeConstraints { (make) in
        make.left.equalTo(0)
        make.top.equalTo(20)
        make.bottom.equalTo(-1)
        make.width.equalTo(300)
    }

    label.text = "\(value)"
    label.textColor = UIColor.redColor()
    label.numberOfLines = 1
    label.tag = 1000
}

}

收藏
2
sina weixin mail 回到顶部