• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何为 UIView 或包含的 Controller 的 mask 效果设置动画

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:17:29 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我们有一个 iOS,我们目前正在制作动画以将包含 View 上的 alpha 设置为 0。像这样:

[UIView animateWithDuration:1.0f animations:^{
 self.jtContained.view.alpha = 1.0f;
}];

self.jtContained 是一个包含的 Controller ,表示其容器 Controller 的下半部分;这将删除此包含的 Controller 中的所有触摸功能。我们认为在这个包含的 Controller 上本质上具有动画蒙版可能更直观。这是我们想要的快速 5 分钟的 Photoshop(即不是将其动画化,而是屏蔽掉包含的 Controller ):

enter image description here

是否有使用 UIView 动画或核心动画的预构建方式来执行此操作?我什至想只遍历 View 并将像素设置为 0。抱歉,如果这是一个幼稚的问题,但我发现一些 Core Animation 文档令人不知所措。

提前谢谢



Best Answer-推荐答案


您要做的是创建一个 CAShapeLayer 并使其成为您 View 层的 mask 层。然后将 CGPath 添加到作为 View 全尺寸的形状层。 (您将创建一条从 View 的一个角开始的路径,并围绕这些角绕一圈移动,从而创建一个矩形路径。)

当您想要遮盖您的 View 时,您可以将路径替换为另一个面积为零的矩形路径。 (第一条路径可能会从 top_left、top_right、bottom_right、bottom_left、close 绕过拐角。空路径会去 top_left、top_right、top_left、top_right、close。)

Core Animation 将对定义形状层的路径的更改进行动画处理,并且由于路径是 View 层的蒙版,因此蒙版会进行动画处理,从而隐藏您的 View 。

正确制作动画的关键是起始路径和结束路径必须具有相同数量的点。这就是我描述创建一个 4 点路径和另一个 EMPTY 4 点路径的原因。当你这样做时,Core Animation 会为点的移动设置动画,你会得到你想要的效果。如果您的起点和终点路径具有不同数量的控制点,或者控制点的顺序不同,则“结果未定义”并且通常根本不是您想要的。

您要问的是一个显示动画,这与我上面描述的相反。

我在 github 上有一个名为 iOS-CAAnimation-group-demo 的演示项目(链接)显示了这个想法。查看“蒙版动画”按钮后面的代码。该代码创建了一个“时钟删除”动画,这比您想要做的简单显示要复杂得多。

附:如果这篇文章对您有帮助,请记得将其标记为回答您的问题(并投票)。

关于ios - 如何为 UIView 或包含的 Controller 的 mask 效果设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032020/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap