Цвет фона в UIView не отображается - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть UIView, который должен отображать два цвета, красный и оранжевый, в зависимости от значения rating: Double Проблема в том, что при запуске приложения ничего не отображается. В моем выходном журнале функция печатает, что она запустилась и что значение рейтинга должно быть таким, каким оно должно быть. Поэтому я не уверен, почему при запуске приложения ничего не отображается, я просто вижу белый.

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 голосов
/ 15 сентября 2018

Вы должны добавить setUpView в init(: метод

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...