2012-02-17 1 views
29

問題:ボタンのtitleEdgeInsetUITextAlignmentLeftを設定すると、ボタンのタイトルは左揃えではなく、中央に配置されます。UITextAlignmentLeftを使用したiOS UIButtonでもテキストのセンタリングが行われますか?

詳細:
私は広い左の画像とカスタムの背景を使用してボタン200pxのを持っています。ボタンのタイトルに画像を表示させたくないので、titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);を使用してタイトルを挿入します。これにより、タイトルラベルのx位置が45ピクセルで始まり、200ピクセルで終わるようにする必要があります。また、ボタンのタイトルを画像に左揃えにしたいので、textAlignment = UITextAlignmentLeftも設定します。ただし、タイトルテキストは45ピクセルと200ピクセルの中央に配置され、左揃えにはなりません。

なぜですか?

ここに関連するコードです:

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

答えて

80

私のテストコード:私はbutton.contentHorizontalAlignment、ないbutton.titleLabel.textAlignmentを設定

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]; 

注意。私の結果:

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

Screen shot of label

4

はtitleLabelの背景色を置きます。私はフィットするようにサイズが揃っていると賭けているので、テキストの配置は重要ではありません。それが必要なだけの時間です。あなたが修正する必要があるのは、ラベル自体の位置です。 UIButtonを拡張し、layoutSubviewsをオーバーライドして正しいものにする必要があるかもしれません。私は中心のラベル以外の何ものでもボタンを見たことはありません。

22

、それが動作します。

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
ボタンの
2

設定contentHorizo​​ntalAlignmentプロパティ:

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
0

ちょうどボタンのセッターをオーバーライドし、セッターにcontentHorizo​​ntalAlignmentプロパティを設定しよう:

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

    return _yourButton; 
} 
1

スウィフト3

コンテンツを設定するHorizo​​ntalAlignmentプロパティは作業を行います。ありがとう

yourButton.contentHorizontalAlignment = .left 
関連する問題