美文网首页
NSLayoutConstraint实现View动态增加减少

NSLayoutConstraint实现View动态增加减少

作者: 青涩丶青春 | 来源:发表于2016-07-27 20:59 被阅读0次

       因为项目中存在这么一个功能,当为某状态的时候,头部View显示三个模块。当为另种状态,头部View显示两个模块。三个模块效果图如下:

    三个模块的截图

    两个模块的状态如下:

    两个模块的截图

    看到这种需求,想也不想就知道需要用上约束来解决上述的问题:不错,本文就是通过用NSLayoutConstraint来解决该需求。

    通过分析可知,当为某种状态,显示三个View。当为其他状态,显示两个View。先通过一个按钮实现切换状态。

    搭建的界面如下:

    搭建的界面

    我们设置了Btn1和Btn2和Btn3的width 相等。如果通过拉Btn3的widthConstraint到Controller进行操作。

    widthConstraint

    现在就是开始计算的方程。

    分块

    假设 KWidth [UIScreen mainScreen].bounds.size.width

    当三模块时:AWdith+BWidth+CWidth = KWidth;

    当两模块时:AWidth+BWidth = KWidth;

    同时上述还存在AWidth=BWidth=CWidth的关系;

    而我们拉出来的widthConstraint是存在这么一个关系的。

    widthConstraint = AWidth*multiplier+constant;

    因为multiplier=1 所以widthConstraint = AWidth+constant;代入上面的公式:

    即AWidth+BWidth+AWidth+Constant = KWidth;

    当三模块时Constant=0;所以AWidth=BWidth=CWidth=KWidth/3;

    当两模块时,因为CWidth=0。所以Constant=-CWidth;

    也就是AWidth=BWidth=KWidth/2;即constant=KWidth/2;

    点击代码如下:

    点击代码

    最终实现效果如下:

    最终效果

    相关文章

      网友评论

          本文标题:NSLayoutConstraint实现View动态增加减少

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