gpt4 book ai didi

objective-c - 如何在Cocoa中从NSButton的中心点顺时针方向旋转NSButton?

转载 作者:行者123 更新时间:2023-12-03 17:37:45 25 4
gpt4 key购买 nike

我想在我的 mac 应用程序中为 NSButton 设置动画。

我按照以下链接进行了相同的操作,但下面的代码适用于 iOS,不适用于 Mac。

How to rotate a flat object around its center in perspective view?

我想要实现的目标:

基本上,我想从图像的中心点顺时针旋转图像,就像上面的代码适用于 iOS 一样。 Below result is from iOS which I want.

当前存在的问题:

在 Mac 应用程序中,图像从其角点旋转,而不是从中心旋转。

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0];
animation.toValue = [NSNumber numberWithFloat:2 * M_PI];
animation.duration = 1.0;
animation.repeatCount = INFINITY;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[btnScan setWantsLayer:YES];
[btnScan.layer addAnimation:animation forKey:@"transform.rotation.z"];

This is the result I'm getting currently in mac app.

最佳答案

发生旋转的点受图层的 positionanchorPoint 属性影响,请参阅 Anchor Points Affect Geometric Manipulations 。这些属性的默认值似乎与文档不符,至少在 macOS 10.11 和您使用的任何版本下是如此。

尝试通过添加四行来设置它们,如下所示:

[btnScan setWantsLayer:YES];

CALayer *btnLayer = btnScan.layer;
NSRect frame = btnLayer.frame;
btnLayer.position = NSMakePoint(NSMidX(frame), NSMidY(frame)); // position to centre of frame
btnLayer.anchorPoint = NSMakePoint(0.5, 0.5); // anchor point to centre - specified in unit coordinates

[btnScan.layer addAnimation:animation forKey:@"transform.rotation.z"];

实际上,您设置这些属性的顺序并不重要,结果应该是围绕按钮中心点的图像旋转。

关于objective-c - 如何在Cocoa中从NSButton的中心点顺时针方向旋转NSButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51113571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com