美文网首页
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