Git Hub
коротко

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)
Поделиться
Популярное