PWSwitch
PWSwitch 是一个为那些想让组件看起来更满意的人而设计的自定义 UISwitch
实现。使用 CALayer
和 CAAnimation
构建以提供更精细的控制和美观的交互视觉效果。
- 支持自动布局
- 支持 Storyboard (@IBDesignable, @IBInspectable)
- 可以轻松通过代码进行添加和配置
- 通过 UIAppearance 进行全局自定义
- 支持标准 UISwitch 的
setOn
方法和价值变更控制事件 - 复制标准 UISwitch 的视觉反馈动画
1.1 版本的重大变更
- 将
trackOnFillColor
重命名为trackOnBorderColor
并添加了真实的trackOnFillColor
属性,仅在shouldFillOnPush
设置为 false 时才有效。为了恢复之前的行为,请在项目的所有位置中将trackOnFillColor
重命名为trackOnBorderColor
,然后将新的trackOnFillColor
设置为清除。 (应该是默认值) - 添加了
thumbOffPushBorderColor
。如果您已更改默认的thumbOffBorderColor
,则现在可能也需要调整thumbOffPushBorderColor
。
用法
只需将初始化非零矩形的 PWSwitch
添加到您的视图中。50x26 为默认尺寸,修改它可能需要调整 thumbDiameter
属性
let pwSwitch = PWSwitch(frame: CGRect(x: 0, y: 0, width: 50, height: 26))
view.addSubview(pwSwitch)
另外,您可以使用故事板和/或自动布局将 PWSwitch
添加到您的视图中。
PWSwitch
支持标准的 UISwitch
setOn(on: Bool, animated :Bool)
方法从代码改变状态,当状态改变时发送 UIControlEvents.ValueChanged
事件。可以通过 on
属性获取控制器的当前状态。
pwSwitch.setOn(true, animated: true)
pwSwitch.addTarget(self, action: #selector(self.onSwitchChanged), forControlEvents: .ValueChanged)
if pwSwitch.on {
//do something is switch is on
}
PWSwitch
有许多属性来定制其外观。所有属性都可以通过 UIAppearance
代理全局设置:PWSwitch.appearance()
,或者直接在代码或 Interface Builder 属性检查器中设置。使用 UIAppearance
设置的全局值可以通过直接更改其属性值来覆盖特定实例。
trackOffBorderColor
- 状态为关闭时轨道边框颜色trackOffPushBorderColor
- 当开关被按下时(触摸开始,但未结束)的轨道边框颜色。如果shouldFillOnPush
为 true,则边框宽度会动画显示并将其完全填充在轨道内部trackOffFillColor
- 状态为关闭时轨道填充颜色thumbOffBorderColor
- 状态为关闭时滑块的边框颜色thumbOffPushBorderColor
- 当开关被按下时(触摸开始,但未结束)的手指边框颜色。如果不需要边框颜色动画,则设置为与thumbOffBorderColor
相同的值thumbOffFillColor
- 状态为关闭时的手指填充颜色trackBorderFillColor
- 状态为开启时轨道边框颜色。如果shouldFillOnPush
为 true,则边框会完全填充轨道trackOnFillColor
- 状态为开启时轨道填充颜色thumbOnBorderColor
- 状态为开启时手指边框颜色thumbOnFillColor
- 状态为开启时手指填充颜色thumbDiameter
- 手指的像素直径cornerRadius
- 轨道的圆角半径thumbCornerRadius
- 手指的圆角半径shouldFillOnPush
- 当为 true 时,按下开关时轨道边框宽度会动画显示并且会完全填充轨道内部trackInset
- 轨道从外部控制框架的间距。如果手指比轨道大,则可用thumbShadowColor
- 手指阴影颜色。可以使用 Alpha 值来改变阴影不透明度shadowStrength
- 手指阴影的整体强度thumbDelta
- 当触摸开始时手指增长的量。将值设置为0
会禁用手指的增长/缩小
问题
使用 PWSwitch.appearance()
设置的值会覆盖在 Interface Builder 属性检查器设置的 @IBInspectable
值。
示例
要运行示例项目,请克隆仓库,然后先从 Example 目录中运行 pod install
。
需求
- iOS 8.3+
- Xcode 8.0+
- Swift 3.0+
请使用版本1.0.0以获取对Swift 2.x的最终支持。
安装
PWSwitch可通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile
pod "PWSwitch"
作者
Nikita Shanin, [email protected]
许可证
PWSwitch采用MIT许可证开源。有关更多信息,请参阅LICENSE文件。