具有突出显示不透明度和动画的圆形 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 的子类不会完全填充相邻视图的空间