2017-07-06 9 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に指示するだけの制約が必要です。ここで私は、第二

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

ごとにフォントサイズを大きくする時間を持って、シミュレータ結果は

enter image description here

である私のビューコントローラ

enter image description here

の中央にラベルの付いた一例です

+0

これは別の問題を引き起こします。ラベルの高さはフォントよりもはるかに大きく、周囲のすべてのビューをカバーします。 – Curnelious

+0

@Curnelious私はあなたのポイントを得ていない。この設定は、テキストのフォントがラベルに収まるようにします。固定サイズのラベルを使用していませんか?または、ラベルフレームを更新する機能がありますか? –

+0

sizeToFitを削除してadjustFontに置き換えた場合にのみ、ソリューションが機能するため、高さが大きくなります。私がsizeToFitをあなたのソリューションと一緒にしておけば、彼は完全にラベルの位置を変えます。 – Curnelious

関連する問題