如何在 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】:

UIButtons 由背景图像和标题文本组成,因此您可以使用图像作为背景形状 (setBackgroundImage(_:forState:)),然后使用 setTitle(_:forState:) 更改文本。

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

【讨论】:

以上是关于如何在 Swift 中创建具有自定义形状的 UIButton?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中创建自定义(八角形)UIButton 的最佳方法

Swift 自定义导航项

如何在 Swift 中创建独特的形状或 UIView

如何在 Swift Combine 中创建自定义链?

如何在 iOS Swift4 中创建这个圆形?

如何在Android活动中创建此自定义弹出消息?