cell灵活的页面布局

2018-07-05  本文已影响30人  lanmoyingsheng

有时候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
    }

}

上一篇 下一篇

猜你喜欢

热点阅读