PWSwitch 1.1.3

PWSwitch 1.1.3

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间最新发布2019年11月
SPM支持 SPM

Nikita Shanin 维护。



PWSwitch 1.1.3

  • 作者:
  • Nikita Shanin

PWSwitch

Version Platform: iOS 8+ Language: Swift 5 License

PWSwitch 是一个为那些想让组件看起来更满意的人而设计的自定义 UISwitch 实现。使用 CALayerCAAnimation 构建以提供更精细的控制和美观的交互视觉效果。

  • 支持自动布局
  • 支持 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 default example

另外,您可以使用故事板和/或自动布局将 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文件。