2017-02-20 5 views
0

У меня есть простой закругленный RectUIBezierPath roundedRect - изменение цвет углов

override func draw(_ rect: CGRect) { 
    let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.allCorners, cornerRadii: CGSize(width: cornerSize, height: cornerSize)) 
    fillColor.setFill() 
    path.fill() 
    //fillColor is set to UIColor.black 
    //cornerSize is set to 20 
} 

Но углы белые. Если я устанавливаю цвет фона в UIBuilder для очистки цвета, закругленный прямоугольник становится прямоугольником с острыми углами. Я попытался создать овал с прямоугольником и заполнить его четким цветом. Это тоже не сработало. Возможно, ответ тривиален, но я абсолютно не знаю.

enter image description here

+0

Нет другой необходимости указывать backgroundColor. Я также сталкиваюсь с такой же проблемой. Если я даю четкий цвет для супервизора, тогда цвет фона супервизора изменяется на черный. – Koushik

+0

устанавливается серым цветом в качестве фонового цвета на вид. – Koushik

+0

В фоновом режиме есть TableView. Установка цвета фона серого не является решением. – Wed

ответ

1

Ваш код работает отлично, как это. Если он будет рисовать сплошным черным, когда цвет фона просмотров будет чистым, это, вероятно, означает, что у вас есть черный вид того же размера, что и ваш вид безье. Вы можете проверить это, изменив цвет заливки кривой Безье на нечто, отличное от черного.

Его намного проще отлаживать, если вы используете @IBDesignable и @IBInspectable ключевые слова:

@IBDesignable class BezierView: UIView { 

@IBInspectable var fillColor = UIColor.black 

@IBInspectable var cornerRadius = 20.0 

override func draw(_ rect: CGRect) { 
    let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.allCorners, cornerRadii: CGSize(width: cornerRadius, height: cornerRadius)) 
    fillColor.setFill() 
    path.fill() 
} 

}

Это будет сделать вид в раскадровке, и вы можете изменить цвет заливки и радиус угла в инспекторе представлений.

+0

Я сделал это уже. Я знаю, в чем проблема сейчас. Значения по умолчанию IBInspectable var fillColor и IBInspectable var cornerRadius игнорируются при изменении цвета фона на clearColor. Как я могу присвоить значения по умолчанию IB? После настройки ВСЕ (fillColor, cornerRadius и BackgroundColor) в IB это работает как ожидалось. Спасибо! – Wed

Смежные вопросы