TORoundedButton 1.2.1

TORoundedButton 1.2.1

Tim Oliver 维护。



  • Tim Oliver

TORoundedButton

TORoundedButton

CI Version GitHub license Platform PayPal Twitch

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 文件获取更多信息。