0
這是從我的自定義類中提取的,即繪製一些圖形。功能drawTick()
增加CAShapeLayer
用藍色長方形我GameTimer
UIView
:無法更改AnchorPoint for CAShapeLayer iOS Swift
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
}
}
通過
tick.transform = CATransform3DMakeRotation(45.degreesToRadians, 0, 0, 1)
旋轉角度爲45度的變遷給下一個結果:
在這裏我看到,聲明的錨點不會影響tick
圖層 - 它應該位於藍色矩形的中心。旋轉繞座標(x:0,y:0)旋轉 - 藍色矩形的左上角 - tick.position
。 這個問題 - 爲什麼宣稱anchorPoint
的位置不適用於tick
層?這裏的行爲很奇怪,假設anchorPoint
的默認位置應該已經是(x: 0.5, y: 0.5)
而沒有任何手動覆蓋,但是如果我刪除這個覆蓋 - 沒有任何更改。
謝謝!正如你所提到的那樣工作。 –