CircleProgressButton 0.5.1

CircleProgressButton 0.5.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间最后发布2018年1月
SwiftSwift 版本4.0
SPM支持 SPM

Toshihiro Suzuki 维护。



CircleProgressButton

基于 UIView 的圆形按钮,带基于 CAShapeLayer 进度线条。


platforms
Carthage compatible
Cocoapods
pod

要求

  • iOS9+
  • Swift4+

如何使用

自定义外观

颜色和图标图像可以完全自定义。可以重写或设置首选值。
实际上没有默认的外观,所以请享受其中。👋

    open var defaultImage: UIImage?
    open var inProgressImage: UIImage?
    open var suspendedImage: UIImage?
    open var completedImage: UIImage?
    open var inProgressStrokeColor: UIColor?
    open var suspendedStrokeColor: UIColor?
    open var completedStrokeColor: UIColor?
    open var touchedAlpha: CGFloat = 0.5

UIImage 的 contentMode.center。请确保您提供正确的图像大小。

更新进度和状态

  • state:更新颜色和图标图像
  • progress:更新线条进度
  • reset():同时更新状态和进度

即使在暂停时也可以更新进度。
state 是只读的。通过 suspend()resume()complete()reset() 来更新。

处理触摸事件

    private var token: CircleProgressButton.DisposeToken?

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        token = button.onTap { state in
             switch state {
             case .inProgress:
                print("suspend")
                self.stopJob()
             case .completed:
                print("delete")
                self.stopJob()
             case .default:
                print("start")
                self.resumeJob()
             case .suspended:
                print("resume")
                self.resumeJob()
             }
        }
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        token?.dispose()
    }

使用 RxSwift

    override func viewDidLoad() {
        super.viewDidLoad()
        button.tapGesture.rx.event
            .subscribe(...)
            // ...
    }

对于高级触摸交互...

您可以将您的 UIGestureRecognizerDelegate 分配也能使用。

    button.tapGesture.delegate = self

许可证

MIT