我围绕它的中心旋转了一个 NSView 并验证了结果:
[_cocoaView setFrameCenterRotation:-_rotationX];
我通过更改框架原点来定位 NSView,以便视图与(在这种情况下)Box2D 主体的中心对齐。结果再次符合预期:
CGRect frame = _cocoaView.frame;
frame.origin = CGPointMake(_position.x - frame.size.width * 0.5f,
_position.y - frame.size.height * 0.5f);
_cocoaView.frame = frame;
但是,一旦我将平移和旋转结合起来,旋转中心就不再是视图的中心,而是其他点。我相信框架大小和原点会因旋转而改变,从而移动框架的中心点。结果是视图和 Box2D 主体不再对齐,除非旋转角度为 0。
这是为什么?以及如何将视图转换到特定位置并围绕其中心旋转视图?
PS:我之前尝试将 iOS 版本的已经工作的仿射转换应用于支持层的 NSView 失败。所以我在不使用转换的情况下尝试了它,但是唉,我又被卡住了。如果您知道如何使其与图层和变换一起使用,那也会对我有所帮助。