web-dev-qa-db-ja.com

UIButtonのタイトルを左揃えに設定する方法

電子メールアドレスをUIButtonの左側から表示する必要がありますが、中央に配置されています。

アライメントをUIButtonの左側に設定する方法はありますか?

これは私の現在のコードです:

UIButton* emailBtn = [[UIButton alloc] initWithFrame:CGRectMake(5,30,250,height+15)];
emailBtn.backgroundColor = [UIColor clearColor];
[emailBtn setTitle:obj2.customerEmail forState:UIControlStateNormal];
emailBtn.titleLabel.font = [UIFont systemFontOfSize:12.5];
[emailBtn setTitleColor:[[[UIColor alloc]initWithRed:0.121 green:0.472 blue:0.823 alpha:1]autorelease] forState:UIControlStateNormal];
[emailBtn addTarget:self action:@selector(emailAction:) forControlEvents:UIControlEventTouchUpInside];
[elementView addSubview:emailBtn];
[emailBtn release];
445
Madan Mohan

ContentHorizo​​ntalAlignmentを設定します。

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

また、コンテンツを左のインセットに調整することもできます。そうしないと、テキストが左の境界線に触れます。

emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
1507
user121301

コードの調整をしたくない場合は、インターフェースビルダーを使用することもできます。ここで私はテキストを整列させたままにし、またそれをいくらかインデントします:

UIButton in IB

ボタンにも画像を配置できることを忘れないでください。

enter image description here

117
n8tr

Swift 3以降の場合:

button.contentHorizontalAlignment = .left
30
Vincent
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
13
bhavik

ボタン内のコンテンツ全体の位置を変更したくない場合は、emailBtn.titleEdgeInsetsを使用するほうがcontentEdgeInsetsより優れています。

9
Gabriel

Swift 4 +

button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
9
Zaid Pathan

ここでそれを行う方法となぜそれがそのように動作するのかを説明します: http://cocoathings.blogspot.com/2013/03/how-to-make-uibutton-text-left-or- right.html

8
emkaka

xcode 8.2.1では、インターフェースビルダーで次のように移動します。 enter image description here

6
dang

@DyingCactusのコードに小さなエラーがあります。これは、ボタンのタイトルをより適切に制御するためにボタンのテキストを揃えるためにUIBabtonにUILabelを追加する正しい解決策です。

NSString *myLabelText = @"Hello World";
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

// position in the parent view and set the size of the button
myButton.frame = CGRectMake(myX, myY, myWidth, myHeight); 

CGRect myButtonRect = myButton.bounds;
UILabel *myLabel = [[UILabel alloc] initWithFrame: myButtonRect];   
myLabel.text = myLabelText;
myLabel.backgroundColor = [UIColor clearColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentLeft;

[myButton addSubview:myLabel];
[myLabel release];

お役に立てれば....

アル

4
Al-Noor Ladhani

Swift 2.0の場合

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

誰かが必要とするならこれは助けになることができます。

2
Suraj Sonawane

やってみる

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
0
Gev

Swift 5.0およびXcode 10.2

アプローチする方法は2つあります

1)直接アプローチ

btn.contentHorizontalAlignment = .left

2)SharedClassの例(一度書いてすべての製品を使う)

これはあなたの共有クラスです(このようにあなたは全てのコンポーネントのプロパティにアクセスします)

import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    private override init() {

    }
}

//UIButton extension
extension UIButton {
    func btnProperties() {
        contentHorizontalAlignment = .left
    }
}

あなたのViewControllerでこんな感じ

button.btnProperties()//This is your button
0
iOS