咱们通常来讲会这样进行使用html
咱们再去看看install的方法,其内部就是去先去获取view的全部的约束,而后进行移除,以后再去安装新的约束ios
这个时候你们确定很疑惑,What? 我约束都尚未添加,怎么直接开始遍历了? 其实咱们在block中执行make.left.width这个时候其实就已经在添加约束了,先来看下在调用.left的时候调用的MASConstraintMaker的方法数组
返回值是MASConstriant,因此咱们在make.left以后再.width实际上是调用的是MASConstraint的width方法了其中这个方法是个抽象方法定义在MASConstraint类中。xcode
而后以后调用的就是MASViewConstraint中的addConstraintWithLayoutAttribute方法app
而后咱们点进上面的self.delegate 调用的方法进去看看,调用的是下面的方法,这里其实就能够理解为把left和Width的约束进行合并成为一个约束集合类oop
再去看看constraintMaker中的install方法中的NSArray *installedConstraints = [MASViewConstraint installedConstraintsForView:self.view];里面的installedConstraintsForView方法内部调用了mas_installedConstraints的get方法,而后去获取全部的对象,也就是这里面的方法布局
再去看看这个get方法其实就是运用了运行时的知识post
而后再去看看关于uninstall方法的实现,这个方法的实现就是先判断能不能相应active方法,由于这个属性是ios8才出现的flex
咱们再去看看安装新约束当中的install方法ui
关于上面判断是否只存在constant不同的视图的方法
关于self.hasBeenInstalled其实就是调用了下面的方法
其实Masonry就是对系统自己的自动布局的layout进行了封装