如何旋转UIView绕它正确的中心没有扭曲/歪斜

Chr*_*rry 13 graphics uikit uiview ios swift

我已经构建了自己的动画引擎,我想在我渲染的每个帧上设置UI视图的旋转(60fps)

我现在制作了一个视频,展示了目前的问题.

它相当接近,但它仍然以一种奇怪的方式旋转:

https://www.youtube.com/watch?v=1ZKK4r0-6i4

我已经实现了一个自定义的CustomUIView类,它继承自UI视图.这具有平移,缩放和旋转属性,因此当我转换矩阵时,所有3个都发生在同一个动作中.

var t = CGAffineTransform( translationX: self.translation.x, y: 
self.translation.y );
// Apply scaling
t = t.scaledBy( x: self.scaling.x, y: self.scaling.y );
// Apply rotation
t = t.rotated(by:self.rotation)
self.transform = t
Run Code Online (Sandbox Code Playgroud)

并且大小和宽度设置如下:

view.frame.size.width = parseSize(value, axis: "width")
view.layer.bounds.size.width = parseSize(value, axis: "width")    
Run Code Online (Sandbox Code Playgroud)

我正在尝试设置这两个属性,但我不确定这是否正确.

我已经设置了很多锚点,并且还尝试了视图的整体中心点.

Chr*_*rry 4

问题是我在每个动画帧中多次设置变换。这导致了不同值的复合效应。您需要组织变量,以便在属性修改期间仅设置变换一次。