私はUIButtonのタイトルにカスタムフォントを使用しています。この特定のフォントを除いて、最初の文字の一部がクリップされます。たとえば:クロップされたUIButtonタイトル
私はcontentEdgeInsetsとtitleEdgeInsetsを設定しようと、それはクリップされていないように見えることはできません。 button.titleLabel.clipsToBoundsプロパティをNOに設定しようとしました。
ご意見をいただければ幸いです。
私はUIButtonのタイトルにカスタムフォントを使用しています。この特定のフォントを除いて、最初の文字の一部がクリップされます。たとえば:クロップされたUIButtonタイトル
私はcontentEdgeInsetsとtitleEdgeInsetsを設定しようと、それはクリップされていないように見えることはできません。 button.titleLabel.clipsToBoundsプロパティをNOに設定しようとしました。
ご意見をいただければ幸いです。
私はUIButtonタイトルをnilに設定してしまい、自分のUILabelをサブビューとしてUIButtonに追加しました。 UILabelフレームをボタンと同じサイズに設定し、中央に配置するように設定しました。
私が確信している最もエレガントな解決策ではありませんが、それは仕事を完了します。
あなたのコンテンツが楽しく整理されているように見えます。ラベルのフレームに直接アクセスできない場合は、[button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
を使用して、水平方向の配置の問題を解決してください。
あるとして実際にそれが中央に設定されています。私はそれを正しい正当化に設定すると、それは切り取られたままになります。 –
ジェシュアのソリューションはうまく動作しますが、私の目には最適ではありません。 私はUIButtonをサブクラス化し、それを上書きすることをお勧めしますlayoutSubviews
メソッド。
-(void)layoutSubviews
{
[super layoutSubviews];
CGRect frame = self.titleLabel.frame;
frame.size.height = self.bounds.size.height;
frame.origin.y = self.titleEdgeInsets.top;
self.titleLabel.frame = frame;
}
これは本当に簡単です。(UIButtonをサブクラス化する)クラスを作成し、貼り付けをコピーし、ボタンのカスタムクラスに割り当てます。ありがとう! –
これは受け入れられる回答である必要があります。シンプルでエレガント。 –
ありがとうございました –
上記回答のスウィフトコード:
override func layoutSubviews() {
super.layoutSubviews()
titleLabel?.frame = CGRect(x: bounds.origin.x, y: titleEdgeInsets.top, width: frame.width, height: bounds.size.height)
}
これが唯一の解決策であることは本当にうんざりです。これが起こる理由は、フォントデザイナーが意図的に文字の境界を実際よりも小さくエンコードしてネストするためです。これはイタリック体や筆記体フォントにとって特に重要です。私はAppleがUIButtonラベルの幅を計算することで "正確"ではなかったと思うし、少なくとも私たち自身でそれを変更できるようにしたいと思う。私はバグレポートを提出しています。 – Bek