有时候cell的风格可能有很多种,而只用一个cell类去实现。
在布局[可有可无的控件]时,需要根据style来设置其约束。
对于约束依赖[可有可无的控件],需要配合优先级priority()来进行约束:依赖[可有可无的控件]的约束优先级高,这样通过控制一旦[可有可无的控件]是否有约束,就可以生成不同的界面。
//
// TableViewCell.swift
// SnapKitDemo
//
// Created by 骆鹏飞 on 2018/7/5.
// Copyright © 2018年 GXCJ. All rights reserved.
//
import UIKit
class TableViewCell: UITableViewCell {
enum Style: Int {
case `default` = -1
case one = 1
case two = 2
}
var cellStyle: Style = .default {
didSet {
if cellStyle == .one {
label1.snp.remakeConstraints { (make) in
make.top.equalToSuperview().offset(10)
make.centerX.equalToSuperview()
}
} else if cellStyle == .two {
label1.snp.removeConstraints()
// label1.snp.remakeConstraints { (make) in
// make.height.equalTo(0)
// }
// clipsToBounds = true
}
}
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
initSubviews()
}
var label1:UILabel!
var label2:UILabel!
var label3:UILabel!
func initSubviews() {
label1 = UILabel()
label1.numberOfLines = 0
label1.preferredMaxLayoutWidth = 400
label1.text = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
contentView.addSubview(label1)
label1.snp.makeConstraints { (make) in
make.top.equalToSuperview().offset(10)
make.centerX.equalToSuperview()
}
label2 = UILabel()
label2.numberOfLines = 0
label2.preferredMaxLayoutWidth = 400
label2.text = "222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"
contentView.addSubview(label2)
label2.snp.makeConstraints { (make) in
make.top.equalToSuperview().offset(10).priority(500)
make.top.equalTo(label1.snp.bottom).offset(20)
make.centerX.equalToSuperview()
}
label3 = UILabel()
label3.numberOfLines = 0
label3.preferredMaxLayoutWidth = 400
label3.text = "333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"
contentView.addSubview(label3)
label3.snp.makeConstraints { (make) in
make.top.equalTo(label2.snp.bottom).offset(20)
make.centerX.equalToSuperview()
make.bottom.equalToSuperview().offset(-10)
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
网友评论