NSLayoutConstraint实现View动态增加减少

   因为项目中存在这么一个功能,当为某状态的时候,头部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;

点击代码如下:

点击代码

最终实现效果如下:

最终效果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容