#uiview #swift3
#пользовательский интерфейс #swift3
Вопрос:
Я поместил обычный UIView в IB в свой UIViewController и установил представление в подкласс UIView с помощью следующего метода рисования:
override func draw(_ rect: CGRect) {
super.draw(rect)
self.isOpaque = false
self.backgroundColor?.setFill()
UIRectFill(rect)
let insetRect = self.bounds.insetBy(dx: 0, dy: 4)
UIColor.clear.setFill()
UIRectFill(insetRect)
}
Ожидаемым результатом должно быть то, что цвет фона (белый) отображается в виде строки сверху и снизу представления. Это действительно то, что происходит. Но я бы хотел, чтобы прямоугольник вставки был прозрачным, поэтому я установил цвет на прозрачный. Но вместо этого результат будет черным. Смотрите изображение.
Ответ №1:
Я нашел другой способ сделать это, подкласс UIView, и на этот раз я получаю ожидаемую прозрачность в середине:
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.clear
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func draw(_ rect: CGRect) {
super.draw(rect)
let top = UIBezierPath(rect: CGRect(x: 0, y: 0, width: self.bounds.width, height: 4))
UIColor.white.setFill()
top.fill()
let bottom = UIBezierPath(rect: CGRect(x: 0, y: self.bounds.height - 4, width: self.bounds.width, height: 4))
bottom.fill()
}