如何使用NSImageView设置旋转动画?

时间:2014-08-11 16:16:37

标签: objective-c cocoa animation core-animation

我正在尝试在Cocoa中重新创建一个简单的iOS UIView动画。它只是一个旋转90度的图像视图。

以下是iOS实施:

UIImageView *imageView = [[UIImageView alloc] initWithFrame:containerView.bounds];
imageView.image = myImage;
imageView.contentMode = UIViewContentModeScaleAspectFit;
[containerView addSubView:imageView];

[UIView animateWithDuration:0.5
                 animations:^{
                         imageView.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
                         imageView.frame = containerView.bounds                             
              } completion:^(BOOL finished) {
}];

这是不起作用的Cocoa版本:

[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){             
    context.duration = 0.5;
    [imageView.animator setFrameCenterRotation:90];
    [imageView.animator setFrame: containerView.bounds];
} completionHandler:^{
}];

主要问题是旋转不会随着时间的推移而旋转,它只是猛击到90度,但也有一个奇怪的平移,确实会移动持续时间。

我想我可以用Core Animation做到这一点,但我担心这会打开另一种蠕虫...特别是对于这么简单的事情。正如您所看到的,我在iOS中比Cocoa更有经验。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我知道我为了其他开发人员而回答这个问题有点迟了:

这是从中心旋转图像的项目。

github project link

stackOver flow link of solution