カスタムUIButton画像がボタンでサイズ変更されないのはなぜですか?
Interface Builderで表示モードをScale to Fillに設定しましたが、UIImageView画像とは異なり、その設定は尊重されません。
間違った場所を見ているのですか、それとも不可能ですか?
これはあなたが望んでいるものとはまったく異なるかもしれませんが-背景画像does scale。
これを試して:
[button setImage:image forState:UIControlStateNormal];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
In Swift:
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
これは古いことは知っていますが、正しい答えは、UIButton内にある「非表示の」UIImageViewにコンテンツモードを設定する必要があると思います。
button.imageView.contentMode = UIViewContentModeScaleAspectFill;
これにより、画像セットの画像ビューのコンテンツモードが変更されます。
[button setImage:yourAwesomeImage forState:UIControlStateNormal];
//Or any other state
ただ(デザインからORコードから)):
[ポイント#3の場合:水平および垂直方向の整列をUIControlContentHorizontalAlignmentFillおよびUIControlContentVericalAlignmentFillに変更]
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
インターフェイスビルダー
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
Interface BuilderのClip subviewsプロパティをtrueに設定してみてください。
お役に立てば幸いです。