wake-up-neo.com

Wie programmiere ich ein Bild in einem UIButton?

Ich habe diesen UIButton und ein Bild, in das ich passen kann. Ich möchte nicht, dass das Bild den gesamten Platz innerhalb der Schaltfläche beansprucht, sondern nur einen kleinen Teil davon direkt in der Mitte, aber wenn ich die Größe der Schaltfläche verändere, ändert sich die Größe das Bild auch ... Wie kann ich das tun? Gibt es eine Option, um die gewünschte Größe unabhängig von der Größe des UIButton festzulegen? Danke.

6
Elia Crocetta

Dies kann auf folgende Weise durch Code erfolgen:

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)

Auf diese Weise können Sie erreichen, was Sie wollten.

10
KrishnaCA

Sie können mit Bildansichtsinsets experimentieren. Jedes UIButton verfügt über eine Eigenschaft imageView.

In Swift 3 können Sie das so machen:

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

roter Hintergrund ist nur, damit Sie wissen, was sich ändert

7
repoguy

Ich würde es so machen:

Ein UIButton ist nur ein UIView. Sie können einfach ein UIImageView mit einem festgelegten Bild hinzufügen und addSubview für das UIButton aufrufen.

Sie sollten auch userInteractionEnabled auf false für UIImageView setzen.

4
KVISH

Unter Berücksichtigung dessen, was KVISH gesagt hat, habe ich dies implementiert und es hat wie erwartet funktioniert. Ich habe dies gepostet, weil Houman nach einem Beispiel gefragt hat.

//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)
0
Joule87