web-dev-qa-db-ja.com

プログラムで作成されたUIButtonにpadding-leftを追加する方法は?

UIButtonに左パディングを追加するのに問題があります。 UIButtonUIControlContentHorizontalAlignmentLeftがあります。テキストを左側に表示したいのですが、あまりにも左にあります。ボーダーを付けると、見た目が良くありません。 CSSのように5pxのテキストにパディングを付けたいと思います。私は解決策を探しましたが、UIButtonに特化したものは見つかりません。助けてくれてありがとう。

61
MissStack

titleEdgeInsetsボタンタイトル描画長方形の端のインセットまたはアウトセットマージン。

@property(nonatomic)UIEdgeInsets titleEdgeInsets

Discussionこのプロパティを使用して、ボタンタイトルの有効な描画四角形のサイズと位置を変更します。 4つのインセット(上、左、下、右)のそれぞれに異なる値を指定できます。正の値はそのEdgeを縮小または挿入し、ボタンの中央に近づけます。負の値は、そのEdgeを展開または開始します。 UIEdgeInsetsMake関数を使用して、このプロパティの値を作成します。デフォルト値はUIEdgeInsetsZeroです。

可用性 iOS 2.0以降で利用可能。

UIButton.hで宣言

これを試してみてください:)

[myButton setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 5.0, 0.0, 0.0)];

また、カスタムボタンを使用している場合は、コンテンツインセットや画像インセットなどがあります。

Swiftを探してここに来た場合。これは有効ですSwift 3.0 ????

myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: 5.0, bottom: 0.0, right: 0.0)

直接設定することもできます。 1つまたは2つのプロパティを使用する場合に役立ちます。

myButton.titleEdgeInsets.top = 0
myButton.titleEdgeInsets.left = 5
myButton.titleEdgeInsets.bottom = 0
myButton.titleEdgeInsets.right = 0
114
Ryan Poolos

Xcode 6では、IBにタイトルインセットを指定できます。

Interface builder Edge title inset

26

インターフェイスビルダー(IB)でこれらのインセットを設定する場合は、Xcode 8をポストします。これらのインセット設定は、属性インスペクターではなく、サイズインスペクターにあります。

お役に立てれば。

enter image description here

22
Vaibhav

これに対するより良い答えは次のとおりです。

  • ボタンのタイトルを切り捨てないでください
  • タイトルがボタンのビューを超えないようにする
  • ボタンフレームを画像で適切に機能させる。

コード:

extension UIButton {
    func addLeftPadding(_ padding: CGFloat) {
        titleEdgeInsets = UIEdgeInsets(top: 0.0, left: padding, bottom: 0.0, right: -padding)
        contentEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: padding)
    }
}

使用法:

myButton.addLeftPadding(10)
21
Lucas Chwe

これを解決する別の例を次に示します。

 [self.myButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    float padding_button                = 6.0f;
    UIEdgeInsets titleInsets            = UIEdgeInsetsMake(0.0f, padding_button, 0.0f, -padding_button);
    UIEdgeInsets contentInsets          = UIEdgeInsetsMake(padding_button, 0.0f, padding_button, 0.0f);
    CGFloat extraWidthRequiredForTitle  = titleInsets.left - titleInsets.right;
    contentInsets.right += extraWidthRequiredForTitle;
    [self.myButton setTitleEdgeInsets:titleInsets];
    [self.myButton setContentEdgeInsets:contentInsets];
    [self.myButton sizeToFit];

ボタンに画像がある場合は、次を追加するだけです:

[self.myButton setImage:[UIImage imageNamed:@"YourImage.png"] forState:UIControlStateNormal];

幸運を!

7
Oleg Popov
_myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
_myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
3
Rapunzel