web-dev-qa-db-ja.com

プログラムでUIButton内の画像のサイズを変更する方法は?

このUIButtonと画像が収まるようにしています。画像がボタン内のすべてのスペースを占めるのではなく、その中央のほんの一部を取りたくありませんが、ボタンのサイズを変更すると、画像のサイズも変更されます。 。どうすればいいですか、UIButtonのサイズとは無関係に、任意のサイズを設定するオプションはありますか?ありがとう!

6
Elia Crocetta

これは、次の方法でコードを介して行うことができます。

    let imageSize:CGSize = CGSize(width: 20, height: 20)

    let button:UIButton = UIButton(type: UIButton.ButtonType.custom)
    button.frame = CGRect(x: 200, y: 200, width: 60, height: 60)
    button.backgroundColor = UIColor.yellow
    button.setImage(UIImage(named: "chat.png"), for: UIControl.State.normal)

    // The below line will give you what you want
    button.imageEdgeInsets = UIEdgeInsets(
        top: (button.frame.size.height - imageSize.height) / 2,
        left: (button.frame.size.width - imageSize.width) / 2,
        bottom: (button.frame.size.height - imageSize.height) / 2,
        right: (button.frame.size.width - imageSize.width) / 2)

    self.view.addSubview(button)

このようにして、あなたはあなたが望むものを達成することができます。

14
KrishnaCA

イメージビューのインセットを試すことができます。すべてのUIButtonには、imageViewプロパティがあります。

Swift 3では、次のようにできます:

//let button = UIButton()
button.imageView?.backgroundColor = UIColor.red
button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10)

赤い背景は、何が変わっているかを知っているだけです

9

私はそれをこのようにします:

UIButtonは単なるUIViewです。 UIImageViewをセットイメージとともに追加し、addSubviewに対してUIButtonを呼び出すだけです。

7
KVISH

これらは、imageButtonInsetsをUIButtonに追加することで実現できます。

Swift4.2の場合

  button.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
2

これを実装する前にKVISHが言ったことを考慮すると、期待どおりに機能しました。 Houmanが例を求めたので、これを投稿しました。

//grab the image using the name of the pic
var image = UIImage(named: "picture")

//set the size for the image
image = image?.resize(toWidth: 18)
image = image?.resize(toHeight: 18)

//set the image to the button
buttonName.setImage(image, for: UIControlState.normal)

//adjust the position
buttonName.imageEdgeInsets = UIEdgeInsetsMake(8,16,9,0)
2
Joule87