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.

9voto

J. Doe Punkte 11238

Swift 4.X und 5.X

button.imageView!.contentMode = .scaleAspectFit
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill

3voto

Sherwin Zadeh Punkte 1074

Ich glaube, ihr überseht das offensichtliche Problem. Das Bild ist zu groß für die Schaltfläche und iOS hat dann zu erraten, wie Sie es zu skalieren wollen. Stellen Sie sicher, dass Ihre Bilder die richtige Größe haben und Sie werden dieses Problem nicht haben. Natürlich gilt dies für statische Bilder und Schaltflächen, deren Größe Sie im Voraus kennen - nicht für dynamische Inhalte.

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