UIImageview 旋转动画

Posted

技术标签:

【中文标题】UIImageview 旋转动画【英文标题】:UIImageview rotation animation 【发布时间】:2016-08-31 05:32:11 【问题描述】:

我想对两个UIImageViews 应用动画。这个想法是让图像一水平翻转 90 度,然后图像二完成旋转。把它想象成一个硬币旋转:头侧(图一)朝前 -> 转 90 度 -> 尾侧(图二)旋转朝前。我可以做动画的前半部分,但我卡在了后半部分。

[UIView animateWithDuration:1.0f animations:^
    image1.transform = CGAffineTransformMakeScale(-0.01, 1);
 completion: ^(BOOL finished) 
    // How can I make image 2 to rotate out as if it initially was already rotated by 90 degrees?
];

【问题讨论】:

尝试在第一个完成块内添加另一个 animateWithDuration 块 【参考方案1】:

对于翻转动画,有一个名为UIViewAnimationOptionTransitionFlipFromRight的动画选项,例如与UIView's动画方法一起使用,如下所示

 [UIView transitionWithView:myImageView //with first image
                  duration:animationDuration
                   options:UIViewAnimationOptionTransitionFlipFromRight
                animations:^
                    myImageView.image = toImage; //to next image
                 completion:^(BOOL finished) 
             //completion actions after flipped
 ];

还有其他动画选项,例如FromLeftFromTop,FromBottom根据您的要求使用任何一种

【讨论】:

【参考方案2】:

看看这个关于使用 CATransform3D 在 3D 中翻转 UIView 的问题。

Simple Core Animations 3D transform of UIView

答案:

CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -1000.0;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, M_PI * 0.6, 1.0f, 0.0f, 0.0f);
[UIView animateWithDuration:1.0 animations:^
    self.someView.layer.anchorPoint = CGPointMake(0.5, 0);
    self.someView.layer.transform = rotationAndPerspectiveTransform;
 completion:^(BOOL finished)
    // code to be executed when flip is completed
];

【讨论】:

以上是关于UIImageview 旋转动画的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 内的 UIImageView 旋转动画

自动旋转和 UIImageView 动画的问题

UIImageView 的动画旋转变化

动画后的iOS旋转手势

UIView无限360度旋转动画?

在 UIScrollView 问题中旋转 UIImageView