如何在 Swift 中创建具有自定义形状的 UIButton?
Posted
技术标签:
【中文标题】如何在 Swift 中创建具有自定义形状的 UIButton?【英文标题】:How to create UIButton with custom shape in Swift? 【发布时间】:2015-08-12 19:07:44 【问题描述】:我需要创建这样的按钮
并像这样以编程方式更改背景
喜欢这个
我不能为按钮的不同状态使用图像,因为每次我都有不同的文本。
从什么开始?我试图了解 CoreGraphics 和 CoreAnimation,但示例和教程太少,所以我的尝试没有给我任何成功。
【问题讨论】:
【参考方案1】:您可以并且应该为此使用图片。 UIKit 有一个方法resizableImageWithCapInsets
可以创建可调整大小的图像。你给它一个最小尺寸的图像,系统会拉伸它以适应所需的尺寸。看起来您的图像的高度是固定的,这很好,因为您无法使用此技术进行平滑渐变。
【讨论】:
【参考方案2】:UIButton
s 由背景图像和标题文本组成,因此您可以使用图像作为背景形状 (setBackgroundImage(_:forState:)
),然后使用 setTitle(_:forState:)
更改文本。
但是,您仍然可以为此使用 Core Graphics,这样做有很多好处,例如它可以减少应用程序包中渲染资源的数量。为此,最好的方法可能是创建一个CAShapeLayer
,其路径由UIBezierPath
构成,然后将其渲染到图形上下文中。在此上下文中,您可以提取一个 UIImage
实例,并将其视为从 JPEG 或 PNG 资源加载的图像(即使用 setBackgroundImage(_:forState:)
将其设置为按钮背景图像)。
【讨论】:
以上是关于如何在 Swift 中创建具有自定义形状的 UIButton?的主要内容,如果未能解决你的问题,请参考以下文章