70 Stimmen

Wie man ein Bild in UIButton nicht streckt

Ich versuche, eine benutzerdefinierte UITableViewCell programmgesteuert zu erstellen und eine der Unteransichten dieser Zelle wird eine Schaltfläche mit einem Bild in es (ein einfaches Bild einer Lupe) sein. Ich möchte jedoch, dass das Bild der Schaltfläche zentriert und proportional nach unten skaliert wird, um in die Schaltfläche zu passen, und nicht gestreckt wird, um die gesamte Schaltfläche zu füllen. Unten ist mein Code, wo selbst bezieht sich auf die benutzerdefinierte UITableViewCell, die ich die Schaltfläche in platzieren bin.

self.myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.myButton setBackgroundImage:[UIImage imageNamed: @image_name_here"] forState:UIControlStateNormal];
self.myButton.frame = CGRectMake(...//something, something)
self.myButton.imageView.contentMode = UIViewContentModeCenter;
[self.contentView addSubview:self.mySearchHelpButton];

Im Moment wird das Bild so gestreckt, dass es die gesamte Schaltfläche ausfüllt, anstatt es proportional zu skalieren, damit es gut passt.

Ich habe auch versucht, den contentMode auf UIViewContentModeScaleAspectFill aber das scheint nichts zu ändern. Tatsächlich scheint keine der verschiedenen contentModes etwas zu ändern.

68voto

Robot Woods Punkte 5647

Haben Sie versucht setImage anstelle von setBackgroundImage ?

58voto

Dimitris Punkte 13222

Stellen Sie sicher, dass die Schaltfläche eine benutzerdefinierte UIButton ist

Nur mit setImage: hat bei mir unter iOS9 nicht funktioniert.

Aber es funktionierte in Kombination mit myButton.imageView.contentMode = UIViewContentMode.ScaleAspectFit;

46voto

Blank Punkte 4758

In Swift...

button.imageView?.contentMode = . scaleAspectFit

38voto

dimpiax Punkte 10754

Storyboard

Eigentum Bild.

Sie müssen eine bestimmte Eigenschaft in Laufzeit-Attribute de Identitätskontrolleur - imageView.contentMode , wobei Sie den Wert relativ zu rawValue Position der Aufzählung UIViewContentMode . 1 bedeutet scaleAspectFit .

Set button.imageView.contentMode in Storyboard

Und die Ausrichtung der Tasten, in Attribute Inspektor :

Full alignment of button

10voto

Abhishek Jain Punkte 4341

Swift 4.2

myButton.imageView!.contentMode = .scaleAspectFit

Swift frühere Version

myButton.imageView!.contentMode = UIViewContentMode.scaleAspectFit

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X