UIButtonのタイトルを左揃えに設定するにはどうすればよいですか?


472

の左側からメールアドレスを表示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];

回答:


1567

contentHorizo​​ntalAlignmentを設定します。

emailBtn.contentHorizontalAlignment = .left;

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

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

// Swift 3 and up:
emailBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0);

44
これらのプロパティの両方をInterface Builderから設定することもできます。
Mihai Damian 2013

1
それで私から9000番、ありがとう、有用な答え
ロジック

6
ドキュメントを検索するのが面倒です。SOなしで何ができるでしょう!
Kedar Paranjape 2015年

3
SOがAppleのドキュメントよりもドキュメント化されていることを示しに行きます。
GeneCode

1
UIControlContentHorizontalAlignmentLeadingそして、UIControlContentHorizontalAlignmentTrailingiOSの11で追加されました
カル・スティーブンス

118

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

IBのUIButton

ボタンに画像を配置することもできます。

ここに画像の説明を入力してください


これは私にたくさんの手助けをしてくれました、それらのコントロールが何のためにあるのか私が気づかなかったなんて信じられません。
イーサンパーカー、

ありがとう、それは私を助けました。サンプル画像に矢印を表示しないと、ボタンタイトルのエッジインセットを見つけることができませんでした。
Ashok、2015

Xcodeの8.2.1で、それは下の私の答えを参照してください他の場所に移動
一顧

それをプログラムですばやく行う方法は?画像を右側に揃え、タイトルを左側に配置したいですか???
Visalサンボ


13
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

13

スウィフト4+

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

9

ボタン内のコンテンツ全体の位置を変更したくない場合emailBtn.titleEdgeInsetscontentEdgeInsets、を使用することをお勧めします。



7

xcode 8.2.1では、インターフェイスビルダーで次のように移動します。ここに画像の説明を入力してください


5

@DyingCactusのコードに小さなエラーがあります。以下は、UILabelをUIButtonに追加してボタンのテキストを揃え、ボタンの「タイトル」をより適切に制御するための正しいソリューションです。

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

お役に立てれば....

アル


2

Swift 2.0の場合:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

これは、必要な場合に役立ちます。


2

スウィフト5.0Xcodeの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

1

試す

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

1
これは私にとってはうまくいきましたが、contentHorizo​​ntalAlignmentはうまくいきませんでした。
ダンフォードハム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.