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;

點擊代碼如下:

點擊代碼

最終實現效果如下:

最終效果

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容