[解決済み】Autolayout - UIButtonの固有サイズにタイトルインセットが含まれない
質問
UIButtonをautolayoutで配置した場合、コンテンツに合わせてサイズがきれいに調整されます。
として画像を設定すると
button.image
この場合も、固有値の大きさが考慮されるようです。
しかし
titleEdgeInsets
は、レイアウトがこれを考慮せず、代わりにボタンのタイトルを切り詰めます。
ボタンの固有幅がインセットを考慮するようにするには、どうすればよいですか?
編集する
私は以下のように使っています。
[self.backButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
目標は、画像とテキストの間に区切りをつけることです。
どのように解決するのですか?
メソッドをオーバーライドしたり、任意の幅の制約を設定することなく、解決することができます。以下のように、Interface Builderで全て行うことができます。
-
本質的なボタンの幅は、タイトルの幅にアイコンの幅を加えたものに、左右の コンテンツ エッジインセット
-
ボタンに画像とテキストの両方がある場合、それらはグループとして中央配置され、間にパディングはありません。
-
左コンテンツインセットを追加した場合、テキスト+アイコンではなく、テキストとの相対値で計算されます。
-
左画像挿入をマイナスに設定すると、画像は左側に引き出されますが、ボタン全体の幅は影響を受けません。
-
左画像挿入をマイナスに設定した場合、実際のレイアウトではその半分の値が使用されます。つまり、-20ポイントの左インセットを得るには、Interface Builderで-40ポイントの左インセット値を使用する必要があります。
そこで、十分な大きさの左コンテンツ挿入を行い、必要な左挿入のためのスペースを確保します。 と アイコンとテキストの間のパディングを2倍にして、アイコンを左に移動します。その結果、左右のコンテンツ・インセットが等しいボタンができ、テキストとアイコンのペアがグループとして中央配置され、それらの間に特定の量のパディングが入るようになります。
値の例をいくつか示します。
// Produces a button with the layout:
// |-20-icon-10-text-20-|
// AutoLayout intrinsic width works as you'd desire.
button.contentEdgeInsets = UIEdgeInsetsMake(10, 30, 10, 20)
button.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0)
関連
-
[解決済み] "CFNetwork SSLHandshake failed (-9806)" の解決方法について
-
[解決済み] Argument passed to call that takes no arguments "エラーを修正するには?
-
[解決済み] iPhoneが使用できません。デバイスを再接続してください
-
[解決済み] キャッチできない例外 'NSInvalidArgumentException', reason: '-[_.AppDelegate add:]: unrecognized selector' により、アプリを終了する。
-
[解決済み] MacOSとXcodeをアップデートすると、Xcode 8.1の「No matching provisioning profiles found」が表示される。
-
[解決済み] Xcode Simulatorのアニメーションをエディタで再生すると、極端に遅くなる。
-
[解決済み] Xcodeで実行ファイルが無効なエンタイトルメントで署名されてしまう
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] UIButtonのタイトルを左揃えにするにはどうしたらよいですか?
-
[解決済み] iOSです。オートレイアウトで複数行のUILabelを使用する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] iOS Development 証明書が失効されました
-
[解決済み] このアクションは完了できませんでした。再試行 (-22421)
-
[解決済み] selector' の引数が '@objc' メソッド、プロパティ、またはイニシャライザを参照していない
-
[解決済み] 脱獄したiphoneで`uicache`コマンドは何をするのですか?[クローズド]
-
[解決済み] Stringをformatで作成するには?
-
[解決済み] アプリケーションは、アプリケーション起動の最後にルートビューコントローラーを持つことが期待される
-
[解決済み] Unwind segue - インスタンスメソッドのみ @IBAction を宣言でき、ボタンが Exit に接続しない
-
[解決済み] Swift 4 データが正しい形式でないため、読み取ることができませんでした。
-
[解決済み】UIButtonに複数行のテキストを追加する方法は?
-
[解決済み] Swift の拡張機能でメソッドをオーバーライドする