このUIButtonと画像が収まるようにしています。画像がボタン内のすべてのスペースを占めるのではなく、その中央のほんの一部を取りたくありませんが、ボタンのサイズを変更すると、画像のサイズも変更されます。 。どうすればいいですか、UIButtonのサイズとは無関係に、任意のサイズを設定するオプションはありますか?ありがとう!
これは、次の方法でコードを介して行うことができます。
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)
このようにして、あなたはあなたが望むものを達成することができます。
イメージビューのインセットを試すことができます。すべてのUIButtonには、imageViewプロパティがあります。
Swift 3では、次のようにできます:
//let button = UIButton()
button.imageView?.backgroundColor = UIColor.red
button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10)
赤い背景は、何が変わっているかを知っているだけです
私はそれをこのようにします:
UIButton
は単なるUIView
です。 UIImageView
をセットイメージとともに追加し、addSubview
に対してUIButton
を呼び出すだけです。
これらは、imageButtonInsetsをUIButtonに追加することで実現できます。
Swift4.2の場合
button.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
これを実装する前に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)