ios - iOS 中 UIImageView 的动画圆形 mask

标签 ios objective-c uiimageview mask

我想知道如何在 uiimageview 上为蒙版的比例设置动画。附上示例图片。灰色框是我的 uiviewcontroller 的图像背景,不是问题的一部分。

enter image description here

我假设创建了一个 uiview 子类,我传递了一个图像、一个半径和一个中心点。然后(?)创建一个蒙版,然后来回设置动画?

谁能指出我正确的方向?圆圈可以放置在任何地方,大小不限,但要显示的图像始终是全屏的。

最后我会添加一个方法来缩小圆圈。但一步一个脚印。

谢谢指点

-e

最佳答案

马特的想法是正确的。

您要做的是使用 Core Animation 和 CAShapeLayer。图层有一个可选的 mask 属性,它控制图层的可见部分。您可以添加一个 CAShapeLayer 作为另一个图层的 mask 。

如果您在形状层上安装一个圆形的 CGPath,然后使用 CABasicAnimation 在一个更大的圆形的不同路径中设置动画,Core Animation 将为更改设置动画。

在形状图层中对路径进行动画更改的关键是使起始路径和结束路径具有相同数量的控制点。在您的情况下,您应该能够使用 CGPathAddEllipseInRect 创建具有不同边界矩形的起始和结束椭圆。

我在 github 上有一个项目,其中包括使用路径动画来为 ImageView 层上的 mask 设置动画。该项目名为“iOS CAAnimation group demo”,您可以在此链接下载: https://github.com/DuncanMC/iOS-CAAnimation-group-demo 。该项目的主要部分是使用 Core Animation 动画组来应用一系列动画,但它也包括 mask 动画。

在该项目中,蒙版动画创建了一个“时钟删除”过渡:

Clock wipe animation

...但是您应该能够使用基本结构来获得您想要的效果。看一看,如果您无法获得想要的效果,请告诉我。

我有一个 Youtube 视频,展示了我创建的不同过渡。视频中大约 55 秒处的“Iris Circle”过渡非常接近您想要的:

Transitions video

关于ios - iOS 中 UIImageView 的动画圆形 mask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23965658/

相关文章:

objective-c - 如何在 objective-c 中移动图像

ios - 如何将物理主体作为子级添加到 SKSpriteNode?

objective-c - 以编程方式查找 Dock 的位置?

ios - 如何在未运行状态下在 iOS 上获取有关网络更改的通知

iOS 8 当键盘出现时将 UIView 向上移动 |问题

objective-c - 在 SQLite 语句中使用 NSArray

ios - Objective C 将图像保存到图库

ios - 使用框架和图像初始化 ImageView

javascript - 获取UIWebView中确认对话框的值

iphone-sdk-3.0 - 在iOS应用程序中执行自定义位图绘制