Ich möchte einem UIButton ein Bild hinzufügen und mein Bild auch so skalieren, dass es zum UIButton passt (Bild verkleinern). Bitte zeigen Sie mir, wie es geht.
Das habe ich versucht, aber es funktioniert nicht:
- Hinzufügen eines Bildes zur Schaltfläche und Verwenden von
setContentMode
:
[self.itemImageButton setImage:stretchImage forState:UIControlStateNormal];
[self.itemImageButton setContentMode:UIViewContentModeScaleAspectFit];
- Erstellen eines "Stretch-Bildes":
UIImage *stretchImage = [updatedItem.thumbnail stretchableImageWithLeftCapWidth:0 topCapHeight:0];
Antworten:
Wenn Sie ein Bild wirklich skalieren möchten, tun Sie dies, aber Sie sollten die Größe ändern, bevor Sie es verwenden. Wenn Sie die Größe zur Laufzeit ändern, gehen nur die CPU-Zyklen verloren.
Dies ist die Kategorie, mit der ich ein Bild skaliere:
UIImage + Extra.h
UIImage + Extra.m
Sie können es in der gewünschten Größe verwenden. Mögen :
quelle
UIGraphicsBeginImageContext
stattUIGraphicsBeginImageContextWithOptions
. Habe es einfach behoben.Ich hatte das gleiche Problem. Legen Sie einfach den ContentMode der ImageView fest, die sich im UIButton befindet.
Hoffe das hilft.
quelle
imageView.contentMode
, TypNumber
und Wert1
Keine der Antworten hier hat wirklich für mich funktioniert, ich habe das Problem mit dem folgenden Code gelöst:
Sie können dies auch im Interface Builder tun.
quelle
Aspect fit
stattdessen einstellenscale to fill
.Der einfachste Weg , um programmatisch einen UIButton Imageview in gesetzt Aspekte fit - Modus:
Schnell
Ziel c
Hinweis: Sie können .scaleAspectFit ändern (UIViewContentModeScaleAspectFit) zu .scaleAspectFill (UIViewContentModeScaleAspectFill) ein setzen Aspekt fill Modus
quelle
Ich hatte Probleme damit, dass die Größe des Bilds nicht proportional geändert wurde, sodass bei der Art und Weise, wie ich es reparierte, Kanteneinsätze verwendet wurden.
quelle
Dies kann jetzt über die UIButton-Eigenschaften von IB erfolgen. Der Schlüssel ist, Ihr Bild als Hintergrund festzulegen, sonst funktioniert es nicht.
quelle
Wenn Sie Daves Antwort erweitern, können Sie die Anzahl der
contentMode
SchaltflächenimageView
in IB ohne Code mithilfe der Laufzeitattribute festlegen:1
bedeutetUIViewContentModeScaleAspectFit
,2
würde bedeutenUIViewContentModeScaleAspectFill
.quelle
Wenn Sie einfach Ihr Schaltflächenbild verkleinern möchten:
quelle
1 - Löschen Sie den Standardtext der Schaltfläche (wichtig).
2 - Ausrichtung wie Bild einstellen
3 - Stellen Sie den Inhaltsmodus wie das Bild ein
quelle
Ich habe eine Methode, die das für mich erledigt. Die Methode nimmt
UIButton
und passt den Bildaspekt an.quelle
Die sauberste Lösung ist die Verwendung des automatischen Layouts . Ich habe die Priorität des Inhaltskomprimierungswiderstands von mir gesenkt
UIButton
und das Bild (nicht das Hintergrundbild ) über den Interface Builder festgelegt . Danach habe ich ein paar Einschränkungen hinzugefügt, die die Größe meiner Schaltfläche definieren (in meinem Fall ziemlich komplex), und es hat wie ein Zauber funktioniert.quelle
Background Image
Stellen Sie sicher, dass Sie das Bild auf die Eigenschaft Image gesetzt haben, nicht jedoch auf den Hintergrund
quelle
Das Hintergrundbild kann tatsächlich so eingestellt werden, dass die Aspektfüllung ziemlich einfach skaliert wird. Ich muss nur so etwas in einer Unterklasse von UIButton tun:
quelle
Swift 5.0
quelle
Für Xamarin.iOS (C #):
quelle
Sie müssen nur den Inhaltsmodus der UIButton-Bildansicht für drei Ereignisse festlegen. - -
Wir haben Code für drei Ereignisse beim Hervorheben oder Auswählen, wenn die Schaltflächengröße QUADRATISCH und die Bildgröße rechteckig ist, wird zum Zeitpunkt des Hervorhebens oder Auswählens ein quadratisches Bild angezeigt.
Ich bin sicher, dass es für Sie funktionieren wird.
quelle