UIView中的背景色未显示

时间:2018-09-15 09:20:22

标签: ios swift user-interface view

基于rating: Double的值,我有一个UIView应该显示红色和橙色两种颜色。问题是,当我运行该应用程序时,什么都没有显示。在我的输出日志中,该函数显示它已经运行并且额定值是应该的。因此,我不确定为什么在运行该应用程序时什么都没显示,只是看到白色。

class RatingViewController: UIView {

var rating: Double = 1.0
var rate: Double? {
    didSet {
        rating = rate!
        setUpView()
    }
}


override init(frame: CGRect) {
    super.init(frame: frame)

}


required init?(coder: NSCoder) {
    super.init(coder: coder)


}

private func setUpView() {
  Self.backgroundcolor = UIColor.yellow  
    print("rating is \(rating), and width is \((UIScreen.main.bounds.width * CGFloat(rating/10)))")
    let width = (UIScreen.main.bounds.width * CGFloat(rating/10))
    var view: UIView
    view = UIView(frame: CGRect(x: 0, y: 0, width: width, height: self.frame.size.height))
    view.backgroundColor = UIColor.red
    self.addSubview(view)


}


}

1 个答案:

答案 0 :(得分:1)

您必须在init(:方法中添加setUpView

class RatingViewController: UIView {

    var rating: Double = 1.0

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    init(frame: CGRect, rate: Double) {
        super.init(frame: frame)
        self.rating = rate
        setUpView()
    }
    private func setUpView() {
        self.backgroundColor = UIColor.yellow
        print("rating is \(rating), and width is \((UIScreen.main.bounds.width * CGFloat(rating/10)))")
        let width = (UIScreen.main.bounds.width * CGFloat(rating/10))
        var view: UIView
        view = UIView(frame: CGRect(x: 0, y: 0, width: width, height: self.frame.size.height))
        view.backgroundColor = UIColor.red
        self.addSubview(view)
    }
}

现在,您可以使用以下自定义init方法调用此类:

// chnage frame and rate according to your requirment  
let rView = RatingViewController(frame: CGRect(x: 0, y: 0, width: 320, height: 300), rate: 2.0)