SwiftyButton
简单的可定制按钮。
安装
Cocoapods
pod 'SwiftyButton'
Carthage
github 'TakeScoop/SwiftyButton'
使用
扁平按钮
let button = FlatButton()
button.color = .cyan
button.highlightedColor = .blue
button.cornerRadius = 5
可点击按钮
let button = PressableButton()
button.colors = .init(button: .cyan, shadow: .blue)
button.shadowHeight = 5
button.cornerRadius = 5
所有属性
以下是可以修改的所有属性列表。这些属性都可以直接从界面构造器中编辑。查看 FlatButton.Defaults
或 PressableButton.Defaults
来设置这些属性的默认值。
FlatButton
button.color = .cyan
button.highlightedColor = .cyan
button.selectedColor = .blue
button.disabledButtonColor = .gray
button.cornerRadius = 8
PressableButton
button.colors = .init(button: .cyan, shadow: .blue)
button.disabledColors = .init(button: .gray, shadow: .darkGray)
button.shadowHeight = 10
button.cornerRadius = 8
button.depth = 0.5 // In percentage of shadowHeight
界面构造器(Storyboard/XIB)
按照常规添加一个 UIButton
,然后
- 将底层类修改为
FlatButton/PressableButton
,并确保模块设置为SwiftyButton
- 确保按钮类型设置为
Custom
默认值
通过修改 FlatButton.Defaults
或 PressableButton.Defaults
结构,您可以设置将应用于 SwiftyButton 任何新实例的默认值
FlatButton.Defaults.color = .cyan
PressableButton.Defaults.cornerRadius = 8
...
自定义内容
使用 CustomPressableButton
在 Swifty Button 中添加自定义内容。
这是 SwiftyButton
的一个子类,它公开了一个内容视图,这个视图会随着按钮状态的改变而移动。你所要做的就是将你的视图添加到 button.contentView
中,并针对这个视图设置布局约束。
安装
pod `SwiftyButton/CustomContent`
使用方法
以下是如何创建一个类似上面的按钮(这里我们使用了 PureLayout 进行约束):
let button = CustomPressableButton()
let indicator = UIActivityIndicatorView(activityIndicatorStyle: .white)
button.contentView.addSubview(indicator)
indicator.autoPinEdgesToSuperviewEdges(with: UIEdgeInsets(top: 10, left: 15, bottom: 10, right: 0), excludingEdge: .right)
indicator.startAnimating()
let label = UILabel()
button.contentView.addSubview(label)
label.autoPinEdgesToSuperviewEdges(with: UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 10), excludingEdge: .left)
label.autoPinEdge(.left, to: .right, of: indicator, withOffset: 10)
label.text = "Loading..."
label.textColor = .white
已知限制
PressableButton
只能与纯色(无 alpha / 不透明度)一起使用,因为它渲染背景图片的方式。请参阅 #2PressableButton
自动管理标题和图片的内边距(titleEdgeInsets
和imageEdgeInsets
)。请参阅 #5- 用户指定的
top
和bottom
内边距值将被覆盖。 - 您可以指定
left
和right
的内边距值。
- 用户指定的
更多示例
查看 示例 文件夹以查看更多按钮示例。
贡献
发布新版本
以下是版本升级的示例: 升级到 0.8.0。
将 NEW_VERSION
替换为您即将发布的版本号。
- 切换到
master
分支并确保其是最新的。 - 打开
SwiftyButton.xcworkspace
并编辑SwiftyButton
目标的设置。将目标版本更改为NEW_VERSION
。 - 打开
CHANGELOG.md
并添加新的部分[NEW_VERSION]
。在文档底部,复制版本锚点并链接到新的版本标签(稍后创建)。在顶部插入一个新的空[master]
部分。 - 打开
SwiftyButton.podspec
并将s.version
编辑为NEW_VERSION
。 - 将更改提交为
Bump to NEW_VERSION
。 - 创建一个新的 Git 标签,名为
NEW_VERSION
,并将您的提交加标签推送到 Github。 - 使用
$ pod trunk push ./
推送新的 Pod 版本。
许可证
本项目受 MIT 许可证保护。完整的许可证可以在以下地址找到: https://github.com/TakeScoop/SwiftyButton/blob/master/LICENSE
致谢
- 受 HTPressableButton 启发:https://github.com/herinkc/HTPressableButton
- 示例中使用到的颜色来自 https://flatuicolors.com/