2017-07-06 129 views
0

我必須要改變的字體大小,雖然我做到這一點:UILabel動態改變字體大小並保持位置?

  1. 保持它在相同的位置
  2. 調節框架以適應居中。

當我做2號,它不會停留中心:

label.font = label.font.withSize(max*percentage) 
    label.sizeToFit() 

如果我不這樣做,我將不得不改變框架,並發現它是如何動態地貼合字體。 有沒有任何優雅 2行的方式?

回答

0

完成此操作:

let center:CGPoint=editedView.center // first take the center 
label.font = label.font.withSize(max*percentage) 
label.sizeToFit() // set right size 
label.center=center //then set it back 
1

如果要爲標籤保留相同的中心,則必須先定義一箇中心。您可以創建一個UIView,然後將標籤置於視圖上,然後將clipToBounds設置爲false。在這種情況下,您的標籤在視圖中居中。

這個UIView實際上可以是任何東西。你只需要約束來告訴swift,當更新框架時,你的標籤居中關聯中心。下面是在我的視圖控制器爲中心的標籤的一例

enter image description here

我有一個時間,以增加每秒

func timerDidFire(timer: Timer) { 
    size += 5 
    label.font = label.font.withSize(CGFloat(size)) 
    label.sizeToFit() 
} 

字體大小和模擬器結果

enter image description here

+0

這會產生另一個問題,那麼標籤的高度會比字體大得多,並覆蓋所有視圖。 – Curnelious

+0

@Curnelious我沒有得到你的觀點。此設置將確保文本的字體符合標籤。你沒有使用固定大小的標籤嗎?或者你有更新標籤框架的功能? –

+0

高度將會更大,因爲只有當您移除sizeToFit並將其替換爲adjustFont時,解決方案纔會起作用。如果我保留sizeToFit,並附上您的解決方案,他將完全改變標籤的位置。 – Curnelious