Как повернуть NSButton по часовой стрелке от его центральной точки в Какао? - PullRequest
0 голосов
/ 30 июня 2018

Я хочу установить анимацию для NSButton в моем приложении Mac.

Я перешел по ссылке ниже для того же, но код ниже работает для iOS, а не для Mac.

Как вращать плоский объект вокруг его центра в перспективе?

Чего я хочу достичь:

По сути, я хочу повернуть изображение по часовой стрелке от центральной точки изображения, так же как приведенный выше код работает для 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.

1 Ответ

0 голосов
/ 30 июня 2018

Точка, вокруг которой происходит вращение, зависит от свойств слоя position и anchorPoint, см. Точки привязки, влияющие на геометрические манипуляции . Значения по умолчанию для этих свойств не соответствуют документации, по крайней мере в 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"];

На самом деле не имеет значения, в каком порядке вы устанавливаете эти свойства, результатом должно быть вращение изображения вокруг центральной точки кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...