J'ai cet UIButton et une image à intégrer. Je ne veux pas que l'image prenne toute la place à l'intérieur du bouton, mais juste une petite partie au centre, mais si je redimensionne le bouton, elle sera redimensionnée l'image aussi . Comment puis-je faire cela, y a-t-il une option pour définir la dimension que je veux indépendamment de la taille du bouton UIButton? Merci!
Cela peut être fait par le code de la manière suivante:
let imageSize:CGSize = CGSize(width: 20, height: 20)
let button:UIButton = UIButton(type: UIButtonType.custom)
button.frame = CGRect(x: 200, y: 200, width: 60, height: 60)
button.backgroundColor = UIColor.yellow
button.setImage(UIImage(named: "chat.png"), for: UIControlState.normal)
// The below line will give you what you want
button.imageEdgeInsets = UIEdgeInsetsMake(
(button.frame.size.height - imageSize.height) / 2,
(button.frame.size.width - imageSize.width) / 2,
(button.frame.size.height - imageSize.height) / 2,
(button.frame.size.width - imageSize.width) / 2)
self.view.addSubview(button)
De cette façon, vous pouvez réaliser ce que vous vouliez.
Vous pouvez expérimenter avec des incrustations de vue d'image. Chaque UIButton a une propriété imageView.
Dans Swift 3, vous pouvez le faire comme ceci:
//let button = UIButton()
button.imageView?.backgroundColor = UIColor.red
button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10)
fond rouge est juste pour que vous sachiez ce qui change
Je le ferais de cette façon:
Une UIButton
est juste une UIView
. Vous pouvez simplement ajouter une UIImageView
avec une image définie et appeler addSubview
sur la UIButton
.
Vous devez également définir userInteractionEnabled
sur false sur UIImageView
.
Compte tenu de ce que KVISH a dit avant d’avoir mis cela en œuvre, cela a fonctionné comme prévu. J'ai posté ceci parce que Houman a demandé un exemple.
//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)