2017-12-16 23 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π로 이동하는 것은 약간 이상합니다 (아마도 원의 3/4이 당신이 그것을 추가 한 뷰의 프레임 내에 있지 않기 때문입니다). 또한 관련이 없기 때문에 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 '값으로 사용했다고 생각합니다. 그리고 너비와 높이를 적절하게 변경해야합니다. (개인적으로, 기원을 옮겨 놓은 레이어는 싫어서,'CALayer'의 'origin'대신에'UIBezierPath'의'center '를 직접 움직일 것입니다. 그러나 이것 역시 가능합니다.) 말했다, 이것은 나타나지 않는 원형에 영향을 미치지 않을 것이다. 그가 가지고있는 방식으로, 당신은 적어도 원의 사분면을보아야합니다. 나는 뭔가 다른 것으로 의심합니다. – Rob