、満たされた円弧の描画をしませアニメーション。私はアークの描画をアニメーションしようとしていますが、運がありません。iOSのスウィフト - 私は特定の終了角に一定の開始角度から円弧の描画を実装しようとしていますボーダーストローク
私は実装のカップルのために見てきたが、それらのすべては、円のboderをアニメーションの描画することを指します。パイを描く似ていますが、1色で
。特定の開始角度と終了角度。パイのアニメーション描画。私が好きなもの
は、アークが角度を終了するには、開始角度からアニメ化されている間、充填をアニメ化していることです。円弧状
時計回りと、その内部の色を充填された描きながら描かれています。
私はスウィフトでこれをacheiveすることができますどのように任意のアイデア?
ありがとうございます。
編集
これは私が描いたものです。
import Foundation
import UIKit
@IBDesignable class PieChart : UIView {
@IBInspectable var percentage: CGFloat = 50 {
didSet {
self.setNeedsDisplay()
}
}
@IBInspectable var outerBorderWidth: CGFloat = 2 {
didSet {
self.setNeedsDisplay()
}
}
@IBInspectable var outerBorderColor: UIColor = UIColor.white {
didSet {
self.setNeedsDisplay()
}
}
@IBInspectable var percentageFilledColor: UIColor = UIColor.primary {
didSet {
self.setNeedsDisplay()
}
}
let circleLayer = CAShapeLayer()
override func draw(_ rect: CGRect) {
drawPie(rect: rect, endPercent: percentage, color: UIColor.primary)
}
func drawPie(rect: CGRect, endPercent: CGFloat = 70, color: UIColor) {
let center = CGPoint(x: rect.origin.x + rect.width/2, y: rect.origin.y + rect.height/2)
let radius = min(rect.width, rect.height)/2
let gpath = UIBezierPath(arcCenter: center, radius: radius, startAngle: 0, endAngle: CGFloat(360.degreesToRadians), clockwise: true)
UIColor.white.setFill()
gpath.fill()
let circlePath = UIBezierPath(arcCenter: center, radius: radius, startAngle: CGFloat(0), endAngle:CGFloat(360.degreesToRadians), clockwise: true)
circleLayer.path = circlePath.cgPath
circleLayer.fillColor = UIColor.clear.cgColor
circleLayer.strokeColor = outerBorderColor.cgColor
circleLayer.lineWidth = outerBorderWidth
circleLayer.borderColor = outerBorderColor.cgColor
self.layer.addSublayer(circleLayer)
let π: CGFloat = 3.14
let halfPi: CGFloat = π/2
let startPercent: CGFloat = 0.0
let startAngle = (startPercent/100 * π * 2 - π) + halfPi
let endAngle = (endPercent/100 * π * 2 - π) + halfPi
let path = UIBezierPath()
path.move(to: center)
path.addArc(withCenter: center, radius: radius, startAngle: CGFloat(startAngle), endAngle: CGFloat(endAngle), clockwise: true)
path.close()
percentageFilledColor.setFill()
path.fill()
}
}
パイ
を描画するための
コード(グレー色は、円グラフを描画することによって覆われた領域を示しています)
特定の程度の円を描画できるようにUIViewのサブクラスを作成します。 –
@ElTomato編集をご覧ください。 –
PieChartには、初期化できるように終了角度値の初期化子が必要です。その後、別のクラスを作成してPieChartからオブジェクトを作成し、徐々に終了値を変更します。 –