GTTexture-RxExtension 1.2.0

GTTexture-RxExtension 1.2.0

Geektree0101 维护。



 
依赖项
RxSwift~> 4.0
RxCocoa~> 4.0
Texture~> 2.6
 

  • Geektree0101

alt text

CI Status Version License Platform

概念

Texture 提供了各种基本组件,如 ASTableNode、ASControlNode、ASButtonNode 等。

参考:Node 子类

这个库专注于 ASControlNode,为 ASImageNode(UIImageView)、ASNetworkImageNode(UIImageView)、ASButtonNode 等提供了便捷的交互包装。

更多请看:Texture + RxSwift 交互包装

示例

扩展

ASBinder

: 订阅的观察者异步操作。

期望流程 期望界面

但是,节点不知道在绘制之前事件值已应用于 UI。

未期望流程 未期望界面

在这种情况下,节点应该使用setNeedsLayout。但是,[bind:_]不会自动调用setNeedsLayout。

通常,您可以使用以下代码

// Profile NetworkImage Node is default
// username, description is Optional

// *** self is usernameNode supernode
viewModel.username
         .subscribe(onNext: { [weak self] text in 
            self?.usernameNode.rx.text(Node.usernameAttributes).onNext(text)
            self?.setNeedsLayout() // Here
         })
         .disposed(by: disposeBag)

如果您使用ASBinder,则不需要调用setNeedsLayout。ASBinder会自动操作。

// Profile NetworkImage Node is default
// username, description is Optional

// *** self is usernameNode supernode
viewModel.username
         .bind(to: usernameNode.rx.text(Node.usernameAttributes),
               setNeedsLayout: self) 
         .disposed(by: disposeBag)

// *** self is descriptionNode supernode
viewModel.desc
         .bind(to: descriptionNode.rx.text(Node.descAttributes),
               setNeedsLayout: self) 
         .disposed(by: disposeBag)

如果您不需要setNeedsLayout,则编写代码如下。

// setNeedsLayout default is nil!
viewModel.username
         .bind(to: usernameNode.rx.text(Node.usernameAttributes) 
         .disposed(by: disposeBag)

viewModel.desc
         .bind(to: descriptionNode.rx.text(Node.descAttributes)) 
         .disposed(by: disposeBag)
ASBinder流程 输出UI

安装

GTTexture-RxExtension可以通过CocoaPods获取。要安装它,只需在Podfile中添加以下行即可

pod 'GTTexture-RxExtension'

作者

Geektree0101,[email protected]

许可证

GTTexture-RxExtension可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件