2017-12-16 11 views
-1

Swift 4を使ってXCode 9 iOS 11のCAShapeLayerに色を塗りつぶしてみましたが、成功しませんでした。CAShapeLayer塗りつぶし色の速さ4 xcode 9 iOS 11のアイデアはありませんか?

let circlePath = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0), radius: 12, startAngle: 0.0, endAngle: CGFloat(Double.pi * 2.0), clockwise: true) 
let circleLayer = CAShapeLayer() 
circleLayer.path = circlePath.cgPath 
circleLayer.fillColor = UIColor.red.cgColor 
circleLayer.strokeColor = UIColor.white.cgColor 
circleLayer.lineWidth = 1.5 
+0

まず、これをビューのレイヤーに正しく追加したことを確認します。次に、これを追加したビューの「フレーム」を確認します(ビューデバッガなどで)。さて、 '.zero'の中心を使って0から2πに行くのはちょっと変です(その円の4分の3はおそらく、あなたがそれを加えたビューのフレーム内にはないからです)。また無関係で、 'endAngle'を単に' CGFloat.pi * 2'や '.pi * 2'に単純化することをお勧めします。 – Rob

答えて

0

多分、あなたはフレームを設定するのを忘れていました。たとえば、

circleLayer.frame = CGRect(x: 6, y: 6, width: 12, height: 12) 
+0

私はあなたが '12'(半径)または' 12.75'(半径プラス線幅の半分)または '13'かそのようなものの' x'と 'y'値を意味すると思っています。それに応じて 'width'と' height'も変更する必要があります。 (個人的には、起源が動いているレイヤーを持っているのが嫌なので、「CALayer」の原点ではなく、「UIBezierPath」の中央を個人的に動かしたいと思っていますが、これも動作します)。これはサークルには影響しません。彼が持っている方法では、少なくとも円の象限を見るべきです。私は他の何かが間違っていると思う。 – Rob

関連する問題