UIButtonのサイズが固定されている間、ボタンテキストがUIButtonに収まるようにします。
もちろん、UIButtonのtitleLabelにアクセスできます。ラベルでは、autoshrink
を最小フォントスケールに設定します。これは、
self.myButton.titleLabel.adjustsFontSizeToFitWidth = YES;
、ただし実際には同じ動作をしません。テキストが垂直方向ではなく水平方向にのみ境界に収まり、フォントサイズが変更されないためです。
ラベルのフォントサイズをプログラムで実際に調整して、テキストをラベルの境界に合わせるにはどうすればよいですか(下図のGoalを参照)?
私はすでに試しました
self.myButton.titleLabel.numberOfLines = 0;
self.myButton.titleLabel.minimumScaleFactor = 0.5f;
成功せず、常に上の写真の左側のadjustsFontSizeToFitWidth
のようになりました。
編集:ソリューションもios7準拠でなければなりません
self.mybutton.titleLabel.minimumScaleFactor = 0.5f;
self.mybutton.titleLabel.numberOfLines = 0; <-- Or to desired number of lines
self.mybutton.titleLabel.adjustsFontSizeToFitWidth = YES;
... viewDidLoadのlayoutIfNeededの後、トリックを行いました。結局のところ、これらはすべて、フォントサイズをフレームに合わせるだけでなく、実際にフォントサイズを調整するように設定する必要があります。
mybutton.titleLabel?.minimumScaleFactor = 0.5
mybutton.titleLabel?.numberOfLines = 0 <-- Or to desired number of lines
mybutton.titleLabel?.adjustsFontSizeToFitWidth = true
Swift 3.0のコードを更新:
yourButton.titleLabel?.minimumScaleFactor = 0.5
yourButton.titleLabel?.numberOfLines = 0
yourButton.titleLabel?.adjustsFontSizeToFitWidth = true
Interface Builderで、ボタンのユーザー定義ランタイム属性を設定することもできます。
titleLabel.adjustsFontSizeToFitWidth = true
次のメソッドを呼び出してみてください。
button.titleLabel?.baselineAdjustment = UIBaselineAdjustment.AlignCenters
これを試して:
[myButton setFont:[[myButton font] fontWithSize:--originalButtonFontSize]];
textWidth = [text sizeWithFont:[myButton font]].width;
}
Xcode->ストーリーボードを開く->属性インスペクターに移動->コントロール->配置->水平と垂直の両方で2番目を選択します。
または
YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;