RxSwift: создаём реактивное расширение
12 января 2019, 13:34
Расширение
extension Reactive where Base: NSView { public var alphaValue: ControlProperty<CGFloat> { let source = self.observeWeakly(CGFloat.self, "alphaValue", options: [.initial, .new]) .filter { $0 != nil }.map { $0! } .takeUntil(deallocated) let observer = Binder<CGFloat>(base) { control, value in control.alphaValue = value } return ControlProperty(values: source, valueSink: observer) } }
Применение
подписываемся на изменения переменной
view.rx.alphaValue.subscribe(onNext: { value in print("val->", value) }) .disposed(by: disposeBag)
меняем значение по слайдеру
slider.rx.value.subscribe({ [weak self] item in let newValue = Int( item.element ?? 0 ) self?.view.alphaValue = newValue }) .disposed(by: disposeBag)
Твитнуть
Поделиться
Поделиться
Популярное