web-dev-qa-db-ja.com

UITextAlignmentLeftを含むiOS UIButtonはまだテキストを中央揃えですか?

問題:
ボタンのtitleEdgeInsetUITextAlignmentLeftを設定した後も、ボタンのタイトルは中央揃えで、左揃えではありません。

詳細:
左側に画像のあるカスタム背景を使用して、幅200pxのボタンがあります。ボタンのタイトルで画像を覆いたくないので、titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);を使用してタイトルを挿入します。これにより、タイトルラベルのx位置は45pxで始まり、200pxで終わります。また、ボタンのタイトルを画像の左揃えにしたいので、textAlignment = UITextAlignmentLeftも設定します。ただし、タイトルテキストは依然として左揃えではなく、45pxから200pxの中央に配置されます。

どうして?

関連するコードは次のとおりです。

button.titleEdgeInsets = UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);
button.titleLabel.textAlignment = UITextAlignmentLeft;
[button setTitle:@"X"];
29
memmons

私のテストコード:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(20, 20, 200, 72);
UIImage *image = [UIImage imageNamed:@"rob.png"];
[button setImage:image forState:UIControlStateNormal];
button.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
[button setTitle:@"Hello" forState:UIControlStateNormal];
button.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[self.view addSubview:button];

button.contentHorizontalAlignmentではなくbutton.titleLabel.textAlignment。私の結果:

Screen shot of label

80
rob mayoff

ボタンのcontentHorizo​​ntalAlignmentプロパティを設定すると、機能します。

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Swift 4.

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignment.center
22
Vineesh TP

TitleLabelに背景色を配置します。それに合わせてサイズが調整されているので、テキストの配置は問題になりません。必要なだけです。修正する必要があるのは、ラベル自体の位置です。 UIButtonを拡張して、それを正しくするためにlayoutSubviewsをオーバーライドする必要がある場合があります。ラベルが中央に配置されているボタン以外は見たことがありません。

4
ZaBlanc

ボタンのcontentHorizo​​ntalAlignmentプロパティを設定します。

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
2
Evana

Swift

ContentHorizo​​ntalAlignmentプロパティを設定して作業を行います。ありがとう

yourButton.contentHorizontalAlignment = .left
1
Riajur Rahman

ボタンのセッターをオーバーライドし、セッターでcontentHorizo​​ntalAlignmentプロパティを設定してみます。

-(UIButton *)yourButton {
      [_yourButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];

    return _yourButton;
}
0
Mostafa Elbutch