更新 xib約束動畫

2021-07-14 09:14:35 字數 1172 閱讀 6087

我是ios開發。布局介面時,我偏愛xib布局,原因是,如果控制項多時,建立控制項的**會很多,在加上一些繫結事件,或實現一些**,再加上masonry的布局,整體**量會猛增,雖清晰,但總覺得不如用xib拖控制項,減少建立的**,用xib約束,減少masonry布局的**塊。

如果不熟悉如何修改xib的約束的,我這裡先舉個小列。如果熟悉,就跳過此部分。

對控制項拖約束,此時約束是實線,選擇在**中需要修改的約束上連敲兩下左鍵,彈出小框,框中有三條,依次是constant,priority,multiplier.其中priority的值為1000。表示必須的約束,不可修改。將值修改為750。發現實線約束,變成虛線了,表示不必要的約束,可以修改。在約束上右鍵,關聯約束到對應的類中。即可根據需要修改此約束。例如:

self

.playbtnheightconstriant

.constant

= 36;

self.playbtnheightconstriant.priority = uilayoutprioritydefaulthigh;//提公升約束的優先順序

我在開發中用xib拖控制項,加約束,然後修改約束的優先順序,關聯到相應類中,再通過改變約束值,做動畫。現在我把動畫分為兩種型別來講。

一種型別是,通過不斷改變約束值,實現動畫。case 1,在scrolldidscroll方法中,根據scrollview.contentoffset.y的值的改變,同步改變某個控制項的約束。即可達到滑動uiscrollview或uitableview或uiwebview等物件時,某控制項實現動畫。case 2,a控制項,b控制項,c控制項在垂直方向用約束相連,並修改a控制項top約束的優先順序,通過修改top約束的值,實現,a,b,c控制項,垂直方向上一起移動。此型別的動畫效果,較純**寫控制項用修改frame來做動畫,更簡單(通過修改乙個,可以多個一起動畫)且**量少。

第二種型別的動畫是,約束值的修改,放到uiview動畫中。經過多次嘗試,得出,約束值的修改,是一瞬間完成的,無論是放置在uiview動畫內外。故當自己用xib布局控制項,想試用uiview動畫修改約束,是達不到動畫效果的。解決方案為,將控制項的frame做相應的uiview動畫。

更新:第二種型別的動畫,約束的更改放到uiview動畫中,是可行的。只需要在修改約束後面緊跟著呼叫[父控制項.view

layoutifneeded

];就可以了。

如遇到錯誤的地方,請不吝指正。謝謝

xib約束問題 (涉及系統tabbar的高度問題)

做適配 乙個介面完全用的xib編寫,同事搭建的框架,自定義tabbar繼承的系統tabbarcontroller。之前自己寫的時候都是自定義乙個view 封裝乙個類去替換原來的系統tabbar。這次在約束的時候遇到如下問題。因為要適配其他機型,所以底層的各個view高度都是按比例分配的。但涉及最下面...

約束動畫如何實現 swift

約束動畫需要view呼叫一下layoutifneeded才可以,直接上 mark 彈簧動畫 private func settinganimation usingspringwithdamping 彈簧效果 0 1.0 取值越小,彈簧效果越明顯 initialspringvelocity 表示初始的...

XIB之顯示在控制台中的衝突約束

不知道大家遇到過那種情況沒,就是自己拉的xib沒有約束警告,在真機或者模擬器上也都沒有什麼錯,介面都是對的,不管是在4,5,6,6s,6p等你的介面都是顯示正確的,也沒有亂,一切看起來是那麼的正確,可是在控制台中有。看下圖 如果你和我一樣遇到過這種情況,請別急,沒事,但是肯定需要改,可能有些同學會感...