如何在Swift中创建具有自定义形状的UIButton?

时间:2015-08-12 19:07:45

标签: ios swift uibutton

我需要创建像enter image description here

这样的按钮

并以编程方式更改背景,如enter image description here

并且喜欢这个enter image description here

我不能将图像用于按钮的不同状态,因为每次我都有不同的文字。

从什么开始?我试图了解CoreGraphics和CoreAnimation,但是有太少的示例和教程,所以我的尝试并没有给我任何成功。

2 个答案:

答案 0 :(得分:0)

可以,并且应该使用图像。 UIKit有一个方法resizableImageWithCapInsets,可以创建可调整大小的图像。您可以为其提供最小尺寸的图像,系统会将其拉伸以适合所需的尺寸。看起来您的图像高度固定,这很好,因为您无法使用此技术进行平滑渐变。

答案 1 :(得分:0)

UIButton由背景图片和标题文字组成,因此您可以使用图片作为背景形状(setBackgroundImage(_:forState:)),然后使用setTitle(_:forState:)

但是,您仍然可以使用Core Graphics,这样做有好处,例如它减少了应用程序包中渲染资产的数量。为此,最好的方法可能是创建一个CAShapeLayer,其路径由UIBezierPath构成,然后将其渲染到图形上下文中。在此上下文中,您可以提取UIImage实例,并将其视为与从JPEG或PNG资源加载的图像相同(即,使用setBackgroundImage(_:forState:)将其设置为按钮背景图像)