web-dev-qa-db-ja.com

Interface BuilderでカスタムUIButton画像のサイズが変更されないのはなぜですか?

カスタムUIButton画像がボタンでサイズ変更されないのはなぜですか?

Interface Builderで表示モードをScale to Fillに設定しましたが、UIImageView画像とは異なり、その設定は尊重されません。

間違った場所を見ているのですか、それとも不可能ですか?

43
willc2

これはあなたが望んでいるものとはまったく異なるかもしれませんが-背景画像does scale。

81
teabot

これを試して:

[button setImage:image forState:UIControlStateNormal];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;

In Swift:

button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
53
Cao Huu Loc

ボタンのControl Alignment設定を忘れずに設定してください

here set Control Alignment settings for the button

36
drpawelo

これは古いことは知っていますが、正しい答えは、UIButton内にある「非表示の」UIImageViewにコンテンツモードを設定する必要があると思います。

button.imageView.contentMode = UIViewContentModeScaleAspectFill;

これにより、画像セットの画像ビューのコンテンツモードが変更されます。

[button setImage:yourAwesomeImage forState:UIControlStateNormal]; 
//Or any other state
11
Raspu

ただ(デザインからORコードから)):

設計から

  1. Xib OR Storyboard。
  2. 選択ボタン
  3. 内部属性インスペクター(右側)> In "コントロール"セクション>水平と垂直の両方で最後の4番目のオプションを選択します。

[ポイント#3の場合:水平および垂直方向の整列をUIControlContentHorizo​​ntalAlignmentFillおよびUIControlContentVericalAlignmentFillに変更]

コードから

button.contentHorizo​​ntalAlignment = UIControlContentHorizo​​ntalAlignmentFill; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;

10

インターフェイスビルダー

UIButtonsで画像を取得し、インターフェイスビルダーのUIViewsと同じ方法でスケーリングするには、次の手順を実行します。

UIButtonを選択し、Identity Inspectorから次をユーザーに追加しますDefined Runtime Attributes

imageView.contentMode番号1

ここで、numberはcontentModeの列挙番号です。例:

0 = Scale to fill 
1 = Aspect Fit 
2 = Aspect Fill
etc..

次に、UIButtonのAttributesエディターを開き、Controlの下でAlignmentを水平および垂直の両方でFill(右の最後のボタン)に設定します。

Swift

次のコードでこれを行うこともできます。

button.imageView?.contentMode = .scaleAspectFit
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
5

Interface BuilderのClip subviewsプロパティをtrueに設定してみてください。

お役に立てば幸いです。

0
Dshutsi