UIButton
に左パディングを追加するのに問題があります。 UIButton
とUIControlContentHorizontalAlignmentLeft
があります。テキストを左側に表示したいのですが、あまりにも左にあります。ボーダーを付けると、見た目が良くありません。 CSSのように5pxのテキストにパディングを付けたいと思います。私は解決策を探しましたが、UIButton
に特化したものは見つかりません。助けてくれてありがとう。
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
Xcode 6では、IBにタイトルインセットを指定できます。
これに対するより良い答えは次のとおりです。
コード:
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)
これを解決する別の例を次に示します。
[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];
幸運を!
_myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
_myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);