TORoundedButton
TORoundedButton
是一个开源的用户按钮界面控件。其设计由显示在带圆角的矩形顶部上的文本组成。这种用户界面样式在 iOS 11 及以上版本中变得越来越常见,但尽管苹果有一个内部使用的官方版本,但没有进行大量修改就无法实现该效果。
TORoundedButton
被设计成尽可能高的图形性能,特别为按钮不透明(例如,它显示在永远不会更改的纯色上)或透明(显示在会改变的内容上)创建了特定的代码路径。
TORoundedButton
不仅是一个 UIButton
的子类。相反,它是一个 UIControl
的子类,所有按钮图形和行为都是从头开始重新设计的。
功能
- 完全自定义的实现,没有
UIButton
的修改。 - 根据 2019 年 WWDC 上的 Core Animation 工程师的建议实现。
- 具有高度的灵活性,为按钮的外观和感觉提供许多配置选项。
- 与 Interface Builder 集成,用于视觉配置。
- 对于需要动态背景内容的情况,它使用 Core Animation 的
cornerRadius
功能,仍然允许高性能的动态剪辑按钮。 - 用户在按钮上滑动时,优雅地取消和恢复动画。
- 利用大多数标准
UIView
属性,以最小化学习曲线。 - 包括动态颜色代码,以生成正常颜色的“点击”阴影,为您节省额外的工作。
- 完全兼容 Swift,类名为
RoundedButton
。
示例
TORoundedButton
拥有一个完整的默认配置,适用于大多数应用实例,但可以进行修改。
// Create a new instance of `RoundedButton`
let button = RoundedButton(text: "Continue")
// The button color itself is controlled via tintColor
button.tintColor = .red
// If desired a brightness offset that will be used to
// dynamically calculate the 'tapped' color from the default one.
button.tappedTintColorBrightnessOffset = -0.15
// A closure is used to detect when tapped
button.tappedHandler = {
print("Button tapped!")
}
使用此库时,要记得正确设置 backgroundColor
。
要求
TORoundedButton
支持 iOS 10 及以上版本。尽管是用 Objective-C 编写的,但可以轻松导入到 Swift 中。
手动安装
将 TORoundedButton
文件夹的内容复制到您的应用项目。
CocoaPods
pod 'TORoundedButton'
Carthage
github "TimOliver/TORoundedButton"
为何构建此功能?
此类按钮样式是许多 iOS 应用中必不可少的基本元素。尽管如此,它并未作为 UIButton
的官方支持样式提供。
因此,大多数开发人员会简单地通过给 UIButton
设置一个实心背景,并使用 Core Animation 的 cornerRadius
API 来实现圆角效果。
尽管这样很简单,但对于很多需要使用按钮的情况来说,这显然是过度的。纹理小组撰写了一篇令人印象深刻的文章,讨论了制作圆角的最佳方式。
我想制作这个控件,因为我想要更好的东西。95% 的时间,简单地生成一个唯一的圆角图形,而不是进行复杂的 GPU 剪裁,效率更高。
话虽如此,对于确实需要动态剪裁的实例,这个库确实使用 cornerRadius
来产生剪裁结果。我在 2018 年的 WWDC 发现,Core Animation 之所以得到改进,得益于 Metal,因此虽然 cornerRadius
仍然有性能开销,但在确实需要真实动态剪裁的情况下,这也是可以接受的。
鸣谢
TORoundedButton
是由 Tim Oliver 作为 iComics 的组件创建的。
由 Pixeden 提供 iOS 设备截图。
许可协议
TORoundedButton
可在 MIT 许可协议下使用。请参阅 LICENSE 文件获取更多信息。