2017-03-27 5 views
0

여기 내 맞춤 클래스에서 일부 그래픽을 그립니다. 기능 drawTick()GameTimerUIView에 파란색 사각형으로 CAShapeLayer을 추가AnchorPoint for CAShapeLayer iOS Swift를 변경할 수 없습니다. Swift

enter image description here

:

tick.transform = CATransform3DMakeRotation(45.degreesToRadians, 0, 0, 1) 

45도까지 회전 각도의

class GameTimer: UIView { 

var tick = CAShapeLayer() 
... 

init(){ 
    super.init(frame: CGRect(x: 0, y: 0, width: 200, height: 200) 
} 
... 

func drawTick() { 
tick.path = UIBezierPath(rect: CGRect(x: 0, y: 0, width: 50, height: 50)).cgPath 
tick.fillColor = UIColor.blue.cgColor 
self.layer.addSublayer(tick) 
tick.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
tick.position = CGPoint(x: bounds.midX, y: bounds.midY) 
tick.transform = CATransform3DMakeRotation(0.degreesToRadians, 0, 0, 1) 
} 

... 

} 

extension Double { 
    var degreesToRadians : CGFloat { 
     return CGFloat(self) * CGFloat(M_PI)/180.0 
    } 
} 

enter image description here

변경하기 다음 결과를 제공

선언 된 앵커 포인트가 tick 레이어에 영향을주지 않습니다. 파란색 직사각형의 중심에 있어야합니다. 회전은 좌표 (x : 0, y : 0) - 파란색 직사각형의 왼쪽 상단 구석 - tick.position을 중심으로 진행됩니다. 질문 - 왜 anchorPoint 위치는 tick 레이어에 적용되지 않습니까? 이상한 행동은 여기에 anchorPoint의 기본 위치가 이미 수동 지정없이 (x: 0.5, y: 0.5)이어야한다고 가정하고 있지만이 무시를 제거하면 아무 것도 변경되지 않습니다.

답변

1

tick 레이어의 크기가 없습니다. 올바른 것으로 보이는 이유는 경로가 경계에 잘리지 않는다는 것입니다 (경계 밖으로 그려 짐).

도형 레이어에 원의 직사각형과 동일한 bounds을 지정하면 중심 주위로 회전을 볼 수 있습니다.

+0

감사합니다. 언급 한대로 정확하게 작동합니다. –