UIBezierPath
のインスタンスがあり、ストロークの色を黒以外に変更したい。誰かがSwiftでこれを行う方法を知っていますか?
Swift 5の場合、UIColor
には setStroke()
メソッドがあります。setStroke()
には次の宣言があります:
_func setStroke()
_
後続のストローク操作の色を、レシーバーが表す色に設定します。
したがって、次のようにsetStroke()
を使用できます。
_strokeColor.setStroke() // where strokeColor is a `UIColor` instance
_
以下のPlaygroundコードは、UIBezierPath
サブクラス内に緑色の塗りつぶし色と明るい灰色のストローク色の円を描画するためにUIView
と一緒にsetStroke()
を使用する方法を示しています。
_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
上記のコードの2行目と最後の行は、質問への回答において重要です。この回答がお役に立てば幸いです。