2017-02-11 12 views
1

iPadまたはiPhoneに表示されるかどうかに応じてサイズが異なる四角いボタンがあります。 ボタンのタイトルのフォントをボタンのサイズに合わせて調整します。そのため、大きなiPad画面では小さく見えず、小さいiPhone画面では大きく見えません。UIButtonの調整されたフォントサイズの値を確認しますか?

私は、次の解決策を考え出した:

// Buttons is an outlet collection 
for button in Buttons { 
      button.titleLabel?.adjustsFontSizeToFitWidth = true 
      button.titleEdgeInsets = UIEdgeInsetsMake(button.frame.height/3, button.frame.width/3, button.frame.height/3, button.frame.width/3) 
      button.titleLabel!.numberOfLines = 1 
      button.titleLabel!.minimumScaleFactor = 0.1 
      button.clipsToBounds = true 
      button.titleLabel?.baselineAdjustment = UIBaselineAdjustment.alignCenters 

      print(button.titleLabel!.font.pointSize) 


     } 

これはタイトルのに基づいて、フォントの大きさの調整を提供します。したがって、短いタイトルのボタンは、長いタイトルのボタンよりも大きなフォントを持ちます。

すべてのボタンで同じフォントサイズを使用したいので、調整したサイズのうちの1つにアクセスしたいとします(最小にしてみましょう)。すべてのボタンに設定します。どうすればいい?

代わりに私は高さボタンにフォントを調整するないを考えていたが、働いていた解決策を見つけることができませんでした。

+0

回答を確認して回答してください –

+0

更新された回答を参照してください。値段は –

+0

iOSの開発途中でこの問題が早期に発生しましたが、今はこれが設計には適していないことに気づきましたアプリ。これを行うのは簡単ではない理由は、本当にあなたのコンテンツが大画面で「成長」するべきではなく、より多くのコンテンツを表示するようにアプリを変更するからです。ちょっと考えましたが、アプリを開発するにはこれがはるかに良い方法だとわかりました。 –

答えて

0

これは、すべてのボタンのフォントサイズを最小サイズに設定するためのソリューションです。

ステップ1.私はテストのためにいくつかの新しいボタン、初期化されている。そして、

let button = UIButton() 
button.titleLabel!.font = UIFont(name: "Helvetica", size: 20) 
let button2 = UIButton() 
button2.titleLabel!.font = UIFont(name: "Helvetica", size: 16) 
let button3 = UIButton() 
button3.titleLabel!.font = UIFont(name: "Helvetica", size: 19) 
let Buttons = [button, button2, button3] 

ステップ2.を、私はminという変数を追加していると私はより大きな値でそれを初期化していますそのようなほぼすべての可能なボタンのフォントサイズ、100、:その後

var min = CGFloat(Int.max) 

ステップ3、私はいくつかを追加しましたあなたのループによりコード:

Buttons.map { $0.titleLabel?.font = UIFont(name:($0.titleLabel?.font.fontName)! , size: min) } 
minにすべてのボタンのフォントサイズを設定する

for btn in Buttons{ 
    btn.titleLabel?.adjustsFontSizeToFitWidth = true 
    btn.titleEdgeInsets = UIEdgeInsetsMake(btn.frame.height/3, btn.frame.width/3, btn.frame.height/3, btn.frame.width/3) 
    btn.titleLabel!.numberOfLines = 1 
    btn.titleLabel!.minimumScaleFactor = 0.1 
    btn.clipsToBounds = true 
    btn.titleLabel?.baselineAdjustment = UIBaselineAdjustment.alignCenters 
    print(btn.titleLabel!.font.pointSize) 
    if (btn.titleLabel?.font.pointSize)! < min{ 
      min = (btn.titleLabel?.font.pointSize)! // to get the minimum font size of any of the buttons 
    }  
} 

ステップ4

for btn in Buttons{ 
    // here goes your code for your buttons(the code from the question) 
    // then my code: 
    if (btn.titleLabel?.font.pointSize)! < min{ 
     min = (btn.titleLabel?.font.pointSize)! // to get the minimum font size of any of the buttons 
    } 
} 

print(min) // prints 16, which is correct amongst the value [20,19,16] 

ので、あなたのコードは次のようになります。

または

あなたの最小フォントサイズがある場合、のは言わせ
for btn in Buttons{ 
    btn.titleLabel?.font = UIFont(name: (btn.titleLabel?.font.fontName)!, size: min) 
} 

... 15は、その後、すべてのボタンのフォントサイズがになります。


これだけです。それが役に立てば幸い!

+0

残念ながら私はボタンのフォントサイズがわかりません。たとえば、すべてのボタンに100のフォントサイズを設定したら、 'adjustsFontSizeToFitWidth'で表示サイズを減らします。 'button.titleLabel!.font.pointSize'は、フォントが縮小されていても100を返します。 – Fredovsky

+0

これをvar min = CGFloat(Int.max) –

+0

に設定してください。更新された回答を参照してください。 –

関連する問題