美文网首页
cell灵活的页面布局

cell灵活的页面布局

作者: lanmoyingsheng | 来源:发表于2018-07-05 15:37 被阅读30次

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

    相关文章

      网友评论

          本文标题:cell灵活的页面布局

          本文链接:https://www.haomeiwen.com/subject/bcypuftx.html