美文网首页
致那些复杂的响应式框架2

致那些复杂的响应式框架2

作者: wangyongyue | 来源:发表于2019-05-08 22:31 被阅读0次

大家看到1的例子,感觉很简单吧
但是计算属性无法扩展,怎么办?
swift给了我们答案,运算符重载,这样的话,class就有了可以计算的能力。
那么就可以创建类似Int,string的类了,甚至更好。
再来一个简单的例子:

    let label = RLabel()
    var re = Response()
   
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Do any additional setup after loading the view.
        self.view.backgroundColor = UIColor.white
        
        
        label.backgroundColor = UIColor.blue
        label.textColor = UIColor.red
        label.frame = CGRect.init(x: 50, y: 80, width: 80, height: 30)
        self.view.addSubview(label)
        
        let button = UIButton()
        button.setTitle("button", for: .normal)
        button.setTitleColor(UIColor.black, for: .normal)
        button.addTarget(self, action: #selector(addText), for: .touchUpInside)
        self.view.addSubview(button)
        button.frame = CGRect.init(x: 50, y: 180, width: 80, height: 30)
        
 
        self.label.re = re

        
    }
    @objc func addText(){
        
        
        re.text = "wyy_click"
        
    }
    
}
class RLabel:UILabel{
    private var _re:Response?
    var re:Response?{
        set{
            
            _re = newValue
            callBack()
        }
        get{
            
            return _re
        }
        
    }
    func callBack(){
        
        re?.responseContent({[weak self] in
 
            self?.text = self?.re?.text
        })
    }
    
}

typealias responseBlock = () -> ()

class Response:NSObject{
    
    var block:responseBlock?
    private var _text:String?
    var text:String?{
        set{
            _text = newValue
            block?()
        }
        get{
            return _text
        }
    }
    func responseContent(_ callBack:@escaping responseBlock){
        
        self.block = callBack
    }
    
   
}

RLabel 封装的view需要在响应做刷新
Response text的响应类,数据双向绑定
通text setter方法出发block,RLabel接受到block完成view刷新
简单好理解,多好。
现在只能做到一对一,还不能做到一对多,还要丰富多个控件(原理不变,还可以方便扩展多个功能)
以这个为基础我们,继续进化吧。哈哈,出发皮卡丘

相关文章

  • 致那些复杂的响应式框架2

    大家看到1的例子,感觉很简单吧但是计算属性无法扩展,怎么办?swift给了我们答案,运算符重载,这样的话,clas...

  • 致那些复杂的响应式框架4

    来吧,当我们用Vue的api完成swift响应式的编写到底会是什么样子的的呢?话不多说上代码示例:放一起有点长一段...

  • 致那些复杂的响应式框架3

    2里面写了一对一的,因为在Response里面只声明一个响应者(block),想要一对多就需要一个队列了,加一个a...

  • 致那些复杂的响应式框架1

    响应式框架真的非常好,了解RX系列总感觉太复杂了,学习曲线有点长。第一次看我就很懵逼,什么啊不懂啊,干嘛啊那么多套...

  • 致那些复杂的响应式框架5 全新移动端框架 CatFlow

    写东西可以写的不好,不好可以改,可以写的不深,慢慢就会好但是不能半途而废,尤其发现好的东西,一定要让大家知道的。C...

  • 从LiveData迁移到Kotlin Flow

    响应式的框架 RxJava:过于复杂、学习成本高 LiveData:针对Android定制、使用简单 针对Java...

  • CSS 响应设计-框架

    响应式 Web 设计 - 框架本章节为大家介绍响应式 Web 设计框架 Bootstrap。 Bootstrap,...

  • Vue总结

    应用复杂度VS框架复杂度 渐进式框架 1、声明式渲染Declarative Rendering2、组件系统Comp...

  • RxSwift源码分析(1)——初探

    RxSwift是函数响应式编程框架,属于Rx系列的其中一个框架。 什么是函数响应式编程? ...

  • ReactiveCocoa初识篇

    关于ReactiveCocoa ReactiveCocoa是iOS环境下的一个函数式响应式编程框架。函数式响应式编...

网友评论

      本文标题:致那些复杂的响应式框架2

      本文链接:https://www.haomeiwen.com/subject/iuezpqtx.html