設定Constraint的時候,可能會發現有一欄叫做Priority,可是似乎都沒有用到。
某些狀況下你會需要它的,舉例來說。
我現在有一個View,他的高度希望是由螢幕解析度來決定,但是又希望有上下限。
像是,View的高為螢幕高的1/6,可是最大不能超過100。
這算是比較特別的例子,他會隨著螢幕解析度的不同而改變,而最大不會超過100
如果有這類的需求,就可以使用Priority來達成。
像是在4s的時候,1/6的大小應該不會超過100,
而6s+的時候,1/6的大小會超過100,而你希望他不要超過。
首先先做簡單的設定,左上右均為0 ,高為100。
這算是比較特別的例子,他會隨著螢幕解析度的不同而改變,而最大不會超過100
如果有這類的需求,就可以使用Priority來達成。
像是在4s的時候,1/6的大小應該不會超過100,
而6s+的時候,1/6的大小會超過100,而你希望他不要超過。
首先先做簡單的設定,左上右均為0 ,高為100。
接著在設定此View高為螢幕的1/6,並將Priority設為750。
最後將高為100的Relation 改為 Less Than or Equal
此時你執行此APP,在最小的4s手機下,這個View的高是160(2x),也就是4s高的1/6,
在6s+執行時,原本1/6應該是320(3x),但是我們規定他最高不能超過100,在3x的時候就是不能超過300,因此這個View的高度會是300
Priority他的值越高越不會被改動,設為1000就是最高選項,任何人都得聽它的話,值越小的Constraint要聽值越高的。
以這個例子來說
螢幕高1/6 Priority 750
高度小於100 Priority 1000
在4s的狀況下 第一條得到的結果是160(2x),而第二條也是符合的,小於等於200(2x)
在6s+的狀況下 第一條得到的結果是320(3x),可是第二條的Priority高於第一條,
第一條說我想要這個View是320,可是他Priority輸給高度小於300(3x)
因此只好聽老大的話,乖乖的小於等於300(3x)。
你可以設定多個優先順序,來達到你想要的效果。
備註:
這邊的值都是依照該裝置的2x 3x來說明的,
簡單的說我輸入100,在2x的裝置下就是100x2 = 200
3x則是300。
沒有留言:
張貼留言