使 UIImageView 离开屏幕的动画

Posted

技术标签:

【中文标题】使 UIImageView 离开屏幕的动画【英文标题】:Animating a UIImageView off the screen 【发布时间】:2011-05-31 13:27:22 【问题描述】:

我有一个UIImageView,我需要在屏幕外设置动画。我通过在 1 秒的动画块中将帧调整为 0 来做到这一点。如果我不考虑作为缩放类型之一的内容类型,它会按照我的意愿缩小到 0,但它会在调整到新的帧大小时挤压图像。 我需要它来剪掉底部。我将内容类型更改为左上角,这导致它不执行任何操作。 我在这里想念什么?

这是动画块代码。

// Change frame height.
[UIView animateWithDuration:1.0f
                 animations:^ 
                     // Animate the frame off the screen
                     _closeImage.frame = CGRectMake(_closeImage.frame.origin.x, _closeImage.frame.origin.y, _closeImage.frame.size.width, 0);
                 
 ];

【问题讨论】:

内容类型是什么意思? 他的意思是缩放模式。 @btate,尝试其他 scaleModes。 【参考方案1】:

您想更改scaleMode 属性。如果您希望它在正确缩放时缩小,您可以将其更改为宽高比。否则,您可以尝试其他一些。

编辑:

根据您的评论,您需要设置clipsToBounds 属性。

【讨论】:

@Moshe 你的意思是contentMode 我正在更改内容模式。如果我做的不是缩放之一,那么框架高度根本不会改变。我目前正在使用左上角。 _closeImage.contentMode = UIViewContentModeTopLeft; 你是在动画块内部还是外部更改它?此外,请尝试在更改内容模式后立即重新加载图像,然后再制作动画。强制使用正确的模式可能会有所帮助。 我在动画块外做。 _closeImage.frame = self.frame; _closeImage.contentMode = UIViewContentModeTopLeft; // Add as subview [self.superview addSubview:_closeImage]; // Remove this from the super view [self removeFromSuperview]; // Change frame height. [UIView animateWithDuration:1.0f animations:^ // Animate the frame off the screen _closeImage.frame = CGRectMake(_closeImage.frame.origin.x, _closeImage.frame.origin.y, _closeImage.frame.size.width, 0); ];【参考方案2】:

你可以试试:

    // Change frame placement.
[UIView animateWithDuration:1.0f
                 animations:^ 
                     // Animate the frame off the screen
                     _closeImage.frame = CGRectMake(_closeImage.frame.origin.x, _parentView.frame.size.height, _closeImage.frame.size.width, _closeImage.frame.size.height);
                 
 ];

_parentView 是包含 imageview 的视图...它会从 parentView 滑出,如果您不再使用它,请考虑将其从 superview 中删除...

【讨论】:

父视图顶部有一个工具栏。我正在寻找更多的效果,就好像图像正在滚出并滚入工具栏一样。所以我只需要将帧设置为 0 并裁剪掉任何不适合的内容。 因此将工具栏设置在图像视图的顶部并将图像的原点更改为:CGRectMake(_closeImage.frame.origin.x, -_closeImage.frame.size.height, _closeImage.frame。尺寸.宽度,_closeImage.frame.size.height);当你可以将它移出屏幕时为什么要缩小图像......

以上是关于使 UIImageView 离开屏幕的动画的主要内容,如果未能解决你的问题,请参考以下文章

uiimageview 动画在用户触摸屏幕时停止

使 UIImageView 出现的圆形动画

动画 UIImageView 运动,然后使用 CGRectIntersection

使 UIImageView 使用解析后的照片进行动画处理

swift 使 UIImageView 和 UIView 像一层一样使它们一起动画

如何使 UIView 不出现在背景上但仍出现在 UIImageView (子视图)上