Как изменить цвет UIBezierPath в Swift?
У меня есть экземпляр UIBezierPath
и я хочу изменить цвет Штриха на что-то другое, чем черный. Кто-нибудь знает, как это сделать в Swift?
2 ответов
С Swift 3,UIColor
есть setStroke()
метод. setStroke()
есть следующее объявление:
func setStroke()
устанавливает цвет последующих операций штриха в цвет, который представляет приемник.
таким образом, вы можете использовать setStroke()
такой:
strokeColor.setStroke() // where strokeColor is a `UIColor` instance
код игровой площадки ниже показывает, как использовать setStroke()
вместе с UIBezierPath
для того, чтобы нарисовать круг с зеленым цветом и светло-серый цвет штриха внутри UIView
подкласс:
import UIKit
import PlaygroundSupport
class MyView: UIView {
override func draw(_ rect: CGRect) {
// UIBezierPath
let newRect = CGRect(
x: bounds.minX + ((bounds.width - 79) * 0.5 + 0.5).rounded(.down),
y: bounds.minY + ((bounds.height - 79) * 0.5 + 0.5).rounded(.down),
width: 79,
height: 79
)
let ovalPath = UIBezierPath(ovalIn: newRect)
// Fill
UIColor.green.setFill()
ovalPath.fill()
// Stroke
UIColor.lightGray.setStroke()
ovalPath.lineWidth = 5
ovalPath.stroke()
}
}
let myView = MyView(frame: CGRect(x: 0, y: 0, width: 200, height: 300))
PlaygroundPage.current.liveView = myView
предположим, вы хотите использовать красный цвет вместо того, чтобы обводить закругленный прямоугольник; Вот как вы это делаете в Swift 3:
// Drawing the border of the rounded rectangle:
let redColor = UIColor.red
redColor.setStroke() // Stroke subsequent views with a red color
let roundedRectagle = CGRect(x: 0,y: 0, width: 90,height: 20)
let rectangleBorderPath = UIBezierPath(roundedRect: roundedRectangle,cornerRadius: 5)
roundedRectangle.borderWidth = 1
roundedRectangle.stroke() // Apply the red color stroke on this view
вторая и последняя строки приведенного выше кода важны для ответа на ваш вопрос.Надеюсь, этот ответ поможет.