具有突出显示不透明度和动画的圆形 UIButton

Posted

技术标签:

【中文标题】具有突出显示不透明度和动画的圆形 UIButton【英文标题】:Circular UIButton with Highlight Opacity and Animation 【发布时间】:2016-05-18 20:15:17 【问题描述】:

对 Swift 和 ios 开发非常陌生。自定义 UIButton 的正确方法是什么?

我希望制作一个只是一个圆圈的 UI 按钮,但我希​​望具有与系统按钮相同的行为:突出显示时它会淡化,并且淡化是动画的。

理想情况下,我会在没有图像的情况下执行此操作,并使用 UIBezierPath,这样我可以为不同大小保持一致的边框宽度。

【问题讨论】:

【参考方案1】:

要制作圆形按钮,只需使用圆角半径属性即可!只要按钮的框架/边界是正方形,如果将cornerRadius设置为宽度的一半,它将显示为圆形。首先,您需要导入 QuartzCore 框架:

import QuartzCore

拐角半径

设置圆角半径:

myButton.layer.cornerRadius = 8.0

要在给定任意框架的情况下制作一个圆,您可以使用以下方法:

myButton.layer.cornerRadius = myButton.frame.size.width / 2.0

您可能必须设置 clipsToBounds 属性才能使拐角半径更改可见:

myButton.clipsToBounds = true

边框

你也可以使用 layer 属性来设置你的边框:

myButton.layer.borderWidth = 1.0
myButton.layer.borderColor = UIColor.purpleColor()

(有关 Objective-C 中的更多示例,请参阅 this post)

【讨论】:

有没有办法让边框在突出显示时反映色调颜色,并使用系统动画进行动画处理? 我不确定您是否可以保留系统动画-我认为它会保留但我不确定:) 要让边框更改颜色并在触摸时设置动画,您可以添加一个目标对于.TouchDown.TouchUpInside | .TouchUpOutside。例如:myButton.addTarget(self, action: "changeHighlightAndAnimate", forControlEvents: .TouchDown)。然后,在您的 changeHighlightAndAnimate 函数中,更改边框颜色并对淡入淡出进行动画处理。

以上是关于具有突出显示不透明度和动画的圆形 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 的正常状态和突出显示状态之间的动画转换

如何创建具有渐变和突出显示的 UIButton?

具有自定义层的 UIButton 的子类不会完全填充相邻视图的空间

动画 UIButton 状态以在点击时淡入和淡出

Swift - 如何使 UIButton 仅在附加的图像上点击交互并忽略透明部分

如何在iOS中实现矩形UIButton到圆形的漂亮动画?