簡體   English   中英

在 Swift 中創建橢圓,周圍有一個進度條

[英]Creating oval in Swift with a Progress bar around it

我正在嘗試設計類似於此圖像的內容,其中有一個橢圓形,然后在它周圍有一個進度條。 我已經能夠用邊框繪制一個古怪的橢圓形,但我完全迷失在它的進度條部分,任何幫助將不勝感激。 這是我的橢圓代碼和輸出是什么

第一張圖片是代碼輸出的,第二張圖片是目標

 func setupOvalView(){
                
        let path = UIBezierPath(ovalIn: CGRect(x: self.ovalView.frame.origin.x, y: self.ovalView.frame.origin.y, width: self.ovalView.frame.width, height: self.ovalView.frame.height))
        
        
        let rect = CGRect(x: self.ovalView.frame.origin.x + 20, y: self.ovalView.frame.origin.y + 20, width: self.ovalView.frame.width - 40, height: self.ovalView.frame.height - 40)
        
        let circlePath = UIBezierPath(ovalIn: rect)
        path.append(circlePath)
        path.usesEvenOddFillRule = true
        
        
        
        let fillLayer = CAShapeLayer()
        fillLayer.path = path.cgPath
        
        fillLayer.fillRule = .evenOdd
        fillLayer.fillColor = UIColor.lightGray.cgColor
        fillLayer.opacity = 0.5
        view.layer.addSublayer(fillLayer)
    }

在此處輸入圖片說明

在此處輸入圖片說明

這是您如何繪制與您所附圖片中的橢圓相似的橢圓的一部分:

    let path = UIBezierPath(ovalIn: CGRect(x: 10, y: 10, width: 100, height: 200))
    let layer = CAShapeLayer()
    layer.path = path.cgPath
    layer.fillColor = UIColor.clear.cgColor
    layer.strokeColor = UIColor.red.cgColor
    layer.strokeStart = 0.5
    layer.strokeEnd = 0.8
    layer.lineWidth = 10
    layer.lineCap = .round
    view.layer.addSublayer(layer)

strokeStart 和 strokeEnd 屬性用於設置進度線的起點和終點

我很容易得到這個:

在此處輸入圖片說明

這似乎很像你想要畫的東西。 它只是三個形狀層。 你已經有了一個,所以你再添加兩個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM