2016-06-25 7 views
-1

円チャートを描くためのコードを書いていて、サンプルコードを読んでいるうちに、Swiftでどのように角度が測定されたのか混乱しました。スウィフトは角度の単位は何ですか?

私が読ん first post

、スウィフトはラジアンを使っているようだ:second post

CGContextAddArc(context, origo.x, origo.y, radius, floatPi * 3/2, floatPi * 3/2 + floatPi * 2 * percent, 0) 

、スウィフトは、0から1までの範囲と角度を定義しているようだ:だから

let circlePath = UIBezierPath(ovalInRect: CGRect(x: 200, y: 200, width: 150, height: 150)) 
var segments: [CAShapeLayer] = [] 
let segmentAngle: CGFloat = (360 * 0.125)/360 

for var i = 0; i < 8; i++ { 
    let circleLayer = CAShapeLayer() 
    circleLayer.path = circlePath.CGPath 

    // start angle is number of segments * the segment angle 
    circleLayer.strokeStart = segmentAngle * CGFloat(i) 

    // end angle is the start plus one segment, minus a little to make a gap 
    // you'll have to play with this value to get it to look right at the size you need 
    let gapSize: CGFloat = 0.008 
    circleLayer.strokeEnd = circleLayer.strokeStart + segmentAngle - gapSize 

    circleLayer.lineWidth = 10 
    circleLayer.strokeColor = UIColor(red:0, green:0.004, blue:0.549, alpha:1).CGColor 
    circleLayer.fillColor = UIColor.clearColor().CGColor 

    // add the segment to the segments array and to the view 
    segments.insert(circleLayer, atIndex: i) 
    view.layer.addSublayer(segments[i]) 
} 

、どのようにスイフトは角度を測定しますか?スウィフトは、角度単位とは全く関係ありません

答えて

1

おかげで、それはそれにちょうどFloat/Doubleです。 Core Graphicsフレームワークの機能で、彼らが期待している角度単位を指定します。問題の機能のドキュメントを読むだけです。 CGContextAddArc docsから

startAngleの正のx軸からのラジアンで測定されたアークの始点に対する角度、。

endAngle:正のx軸からのラジアンで測った円弧の終点までの角度。

またCAShapeLayerstrokeStartstrokeEndプロパティは、それは角度ではないですが、描かれるべき与えられたパスのどの部分を言います。次回にthe docsを読んでください。

関連する問題