В Swift 5.1 и iOS 13 вы можете выбрать один из двух следующих способов решения вашей проблемы.
№1. Нарисуйте и заполните указанный экземпляр CGRect
экземпляром UIColor
внутри подкласса UIView
, используя функцию UIRectFill(_:)
UIKit
предоставляет функцию UIRectFill(_:)
. UIRectFill(_:)
имеет следующее объявление:
func UIRectFill(_ rect: CGRect)
Заполняет указанный прямоугольник текущим цветом.
Следующий код Playground показывает, как использовать UIRectFill(_:)
:
import UIKit
import PlaygroundSupport
class CustomView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.green
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
super.draw(rect)
let bottomRect = CGRect(
origin: CGPoint(x: rect.origin.x, y: rect.height / 2),
size: CGSize(width: rect.size.width, height: rect.size.height / 2)
)
UIColor.red.set()
UIRectFill(bottomRect)
}
}
let view = CustomView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
PlaygroundPage.current.liveView = view
№ 2. Нарисуйте и заполните указанный экземпляр CGRect
экземпляром UIColor
внутри подкласса UIView
, используя метод fill(_:)
CGContext
.
CGContext
имеет метод под названием fill(_:)
. fill(_:)
имеет следующее объявление:
func fill(_ rect: CGRect)
Закрашивает область, содержащуюся в предоставленном прямоугольнике, используя цвет заливки в текущем графическом состоянии.
Следующий код Playground показывает, как использовать fill(_:)
:
import UIKit
import PlaygroundSupport
class CustomView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.green
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
super.draw(rect)
let bottomRect = CGRect(
origin: CGPoint(x: rect.origin.x, y: rect.height / 2),
size: CGSize(width: rect.size.width, height: rect.size.height / 2)
)
UIColor.red.set()
guard let context = UIGraphicsGetCurrentContext() else { return }
context.fill(bottomRect)
}
}
let view = CustomView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
PlaygroundPage.current.liveView = view
person
Imanou Petit
schedule
21.08.2017