snpKit 关于自动布局

来源:互联网 发布:电音大神 知乎 编辑:程序博客网 时间:2024/05/20 13:05
////  TRRateHeardView.swift//  TREvaluation////  Created by Mr.H on 2017/4/25.//  Copyright © 2017年 long. All rights reserved.//import UIKitclass TRRateHeardView: TSView {    var array = [TRRateHeardModel]() //需要创建的个数    init(array:[TRRateHeardModel]) {        self.array = array        super.init()    }    override func viewDidLoad() { self.creatView(array: array) }    func creatView(array:[TRRateHeardModel]) {        var tempLable:UIView? = nil        let multipliedBy:Float = 1 / Float(array.count)        array.forEach {            let view = self.creatlabel(number: array.count, model:$0)            self.addSubview(view)            if tempLable == nil {                view.snp.makeConstraints {                    $0.left.equalToSuperview()                    $0.centerY.equalToSuperview()                    $0.width.equalToSuperview().multipliedBy(multipliedBy)                }            }else {                view.snp.makeConstraints {                    $0.left.equalTo((tempLable?.snp.right)!)                    $0.centerY.equalToSuperview()                    $0.width.equalToSuperview().multipliedBy(multipliedBy)                }            }            tempLable = view        }    }    func creatlabel(number: Int,model: TRRateHeardModel) -> UIView {        let bottomLabel = UIView()        let dotLable = UILabel()        let textLable = UILabel()        bottomLabel.addSubview(dotLable)        bottomLabel.addSubview(textLable)        let dotwidth:CGFloat = model.dotwidth        let spacing:CGFloat = model.spacing        let centeX = spacing / 2 + dotwidth/2        dotLable.layer.cornerRadius = dotwidth/2        dotLable.layer.masksToBounds = true        dotLable.backgroundColor = model.dotcolor        textLable.text = model.title        textLable.font = model.textFont        textLable.textColor = model.textColor        textLable.adjustsFontSizeToFitWidth = true        dotLable.snp.makeConstraints {            $0.right.equalTo(textLable.snp.left).offset(spacing)            $0.centerY.equalToSuperview()            $0.size.equalTo(CGSize(width: dotwidth, height: dotwidth))        }        textLable.snp.makeConstraints {            $0.centerY.equalToSuperview()            $0.height.equalToSuperview()            $0.centerX.equalToSuperview().offset(centeX)        }        return bottomLabel    }    convenience required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }}struct TRRateHeardModel {    var title:    String   //要显示的文字    var textColor:UIColor  //文字颜色    var dotcolor: UIColor  //圆点颜色    var dotwidth: CGFloat  //圆点大小    var spacing:  CGFloat  //红点和文字间距    var textFont: UIFont   //文字大小    init(title:    String,         textColor:UIColor = UIColor.gray ,         dotcolor: UIColor = UIColor.red,         dotwidth: CGFloat = 12,         spacing:  CGFloat = -6,         textFont: UIFont  = UIFont.systemFont(ofSize: 16)) {        self.title     = title        self.textColor = textColor        self.dotcolor  = dotcolor        self.dotwidth  = dotwidth        self.spacing   = spacing        self.textFont  = textFont    }}

调用

 let array = [TRRateHeardModel(title: "王木木"),                     TRRateHeardModel(title: "王木木"),                     TRRateHeardModel(title: "王木木")]        self.heardView = TRRateHeardView(array: array)        self.view.addSubview(heardView)        self.heardView.snp.makeConstraints {            $0.edges.equalToSuperview()        }
0 0