如何在 iOS 7 下对 UIButton 产生涟漪效果? [复制]

Posted

技术标签:

【中文标题】如何在 iOS 7 下对 UIButton 产生涟漪效果? [复制]【英文标题】:How do I do a ripple effect on a UIButton under iOS 7? [duplicate] 【发布时间】:2013-11-01 04:26:03 【问题描述】:

当我点击我的UIButton 时,我希望有一个涟漪效应,基本上是几个圆圈从中散发出来,同时增加和降低它们的不透明度。

我最初的反应是让几个UIImageViews 的圆圈和CGAffineTransformMakeScale 的尺寸稍大一些,同时降低它们的alpha。但我觉得这不是最好的选择,因为它似乎只是为了看起来很愚蠢而创建图像,并且可能会产生一些不必要的偷听。

完成此任务的最佳方法是什么?如果您不使用私有 API,则会获得奖励积分。

【问题讨论】:

***.com/questions/5973530/… @PratyushaTerli 这是一个私有 API,没有奖励积分。 :P @Doug 无论有什么可用的解决方案,请不要重复同样的问题 @DougSmith 你是初学者吗?你认为 UIView 动画是私有 API 吗?或者您对私有 API 有其他定义? 这被错误地标记为重复。另一个问题是指使用 OpenGL 或类似方法向 UIImageView 添加波纹扭曲效果。这个问题是询问如何在点击按钮后添加从按钮后面扩展的环。完全不同的问题和答案。 【参考方案1】:

您可以在按钮后面添加几个透明的UIViews。像这样设置它们(伪代码):

UIView *ripple = [UIView alloc] initWithFrame:(initial frame)];
[ripple setBackgroundColor:[UIColor clearColor]];
[ripple.layer setCornerRadius:ripple.bounds.size.height /2]; //Assuming square images
[ripple setBorderColor:[UIColor redColor].CGColor];
[ripple setBorderThickness:4]; //Or whatever thickness you want

这将创建在运行时渲染的环(而不是图像)。 然后,您可以使用 CGAffineTransformMakeScale 为它们的比例设置动画。

我在我的 GroovePond 应用中的徽标动画中使用了这种方法。 (不是插头!) 只需在应用商店中搜索它即可了解我的意思,它是免费的,并且我所指的动画位于第一个启动屏幕上。显然,在您的情况下,您也可以淡出不透明度。

虽然您可以查看更复杂的涟漪效果,这些效果会使周围的视图变形,但如上所示的简单扁平环更符合 ios7 的扁平设计,尽管我猜这取决于您的应用程序的风格。

【讨论】:

以上是关于如何在 iOS 7 下对 UIButton 产生涟漪效果? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中使用 UIScrollView 在 iOS 中创建水平滚动 UIButton

iOS 7 UIButton 的画外音问题

UIButton iOS 7 跟随 UIKeyboard 动画

使用自动布局创建带有文本和图像的 iOS 7 UIButton

UIButton 在 iOS 7 中无法正常工作

UIButton 在 iOS 7 的兼容模式下没有获得 iOS 6 样式