1. 程式人生 > >利用AutoLayout uilabel文字自動適應大小,寬度

利用AutoLayout uilabel文字自動適應大小,寬度

相比大家會經常遇到  label  或則  textfield等顯示文字的  檢視時,顯示不全,或者無法自動 變化長度  ,自動改變字型的 設定:

今天給大家演示一下,如何 在autolayout讓label 適應 不同的 寬度:

1.自動 改變字型(字型收縮):

首先設定好 label 的約束,包括寬高之後,預設來看 你的  label是不變了 ,但是 當遇到 文字較多時,就會出現顯示不全的問題:

如圖,我們設定好 Label的寬度和高度,和其他約束,固定住 label,


這是我們增加label的字數...會出現顯示不全的問題:


  1. 那麼這種情況該如何解決呢?其實只需要設定一下,讓 字型自動變小來 在相同的寬度下顯示更多的字數:  
  2. 設定方法如下圖:  
  3. 選中 label之後檢視右邊的 屬性欄,  
  4. 點選 Autoshrink   


  1. 選擇  Minimum Font Scale 或者  Minimum Font Size   
  2.  配置一個較小的字型或者最小的縮放比例  Scale即可解決問題!  

看設定之後的 效果是:上圖

2.設定可變的約束

方法一的效果還不錯,但是 字型是變小了!能不能 字型不變小,字數增加時, label的寬度自動變長呢?

設定方法很簡單,

  1. 只需把  label的寬度變為  >=  即可:  
  2. 還可以增加一個約束是<= N  
  3. 那麼就可以限定這個label的寬度在某個範圍內,自動變長,變短了!  
  4. 那麼我們也可以加上方法一的配置,可以在最大長度無法滿足時,自動縮小字型!  

如下圖:



然後可以看到效果,在字型不變的情況下,label自動變長!


當然我們可以把上面的1,2過程都包含進來;

提示:這裡是只有一行文字的情況,如果文字超過了一行,不會自動換行;如果要想文字自動換行,只需要把lable寬度的約束脩改為 <= 即可,此時文字就會自動換行

3.其他高階的方法: 調節Label的內容壓縮阻力和吸附力,

實際上就是調節約數的優先順序也可以實現相應的效果,不過該效果需要你提前設定好優先順序


內容吸附力:防止內容被拉伸,變大: Content Hugging 

內容壓縮阻力:防止被變小 ,Content Compression Resistance

設定這兩個的優先順序可以 實現文字自適應的類似的效果