How to change the color of a UIBezierPath in Swift?

后端 未结 2 1843
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-07 06:15

I have an instance of UIBezierPath and I want to change the color of the stroke to something other than black. Does anyone know how to do this in Swift?

相关标签:
2条回答
  • 2021-02-07 06:51

    Let's assume you want to use the color red instead to stroke a rounded rectangle; This is how you do it in 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
    

    The second and last lines of the above code are important in answering your question.I hope this answer is helpful.

    0 讨论(0)
  • 2021-02-07 07:00

    With Swift 5, UIColor has a setStroke() method. setStroke() has the following declaration:

    func setStroke()
    

    Sets the color of subsequent stroke operations to the color that the receiver represents.

    Therefore, you can use setStroke() like this:

    strokeColor.setStroke() // where strokeColor is a `UIColor` instance
    

    The Playground code below shows how to use setStroke() alongside UIBezierPath in order to draw a circle with a green fill color and a light grey stroke color inside a UIView subclass:

    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
    
    0 讨论(0)
提交回复
热议问题