Wie kann ich die Bildgröße des UIButton anpassen? Ich stelle das Bild wie folgt ein:
[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
Dadurch wird das Bild jedoch bis zur vollen Schaltfläche ausgefüllt. Wie kann ich das Bild verkleinern?
ios
objective-c
xcode
uibutton
Stollen
quelle
quelle
Antworten:
Wenn ich richtig verstehe, was Sie versuchen, müssen Sie mit dem Bildrand der Schaltflächen spielen. Etwas wie:
quelle
Tims Antwort ist richtig, ich wollte jedoch einen weiteren Vorschlag hinzufügen, da es in meinem Fall insgesamt eine einfachere Lösung gab.
Ich wollte die
UIButton
Bildeinfügungen festlegen, weil mir nicht klar war, dass ich den Inhaltsmodus für die Schaltflächen festlegen konnteUIImageView
, was die Verwendung von UIEdgeInsets und fest codierten Werten insgesamt verhindert hätte. Greifen Sie einfach auf die zugrunde liegende Bildansicht über die Schaltfläche zu und stellen Sie den Inhaltsmodus ein:Siehe UIButton hört nicht auf die Einstellung des Inhaltsmodus?
Swift 3
quelle
button.backgroundImageView.contentMode
funktioniert nichtSwift 3:
quelle
contentVerticalAlignment/contentHorizontalAlignment
Optionen habe es mir ermöglicht es die Art und Weise zu skalieren ich hatte gehofft. Vielen Dank für die Veröffentlichung.contentHorizontalAlignment
undcontentVerticalAlignment
tat den TrickSie können dies auch mit dem Integer Builder wie diesem tun.
Ich finde es hilfreich.
quelle
Wenn Ihr Bild zu groß ist (und Sie das Bild nicht verkleinern können / wollen), funktioniert eine Kombination der ersten beiden Antworten hervorragend.
Wenn Sie die Bildeinfügungen nicht genau richtig machen, wird das Bild verzerrt, ohne die zu ändern
contentMode
.quelle
Sie können die
imageEdgeInsets
Eigenschaft Die Einfügungs- oder Anfangsränder für das Rechteck um das Bild der Schaltfläche verwenden.Ein positiver Wert verkleinert oder fügt diese Kante ein - bewegt sich. Ein negativer Wert erweitert oder verschiebt diese Kante.
quelle
Hier ist die andere Lösung zum Skalieren von imageView von UIButton.
quelle
Hier ist die Swift-Version:
quelle
Swift 4
Sie müssten diese beiden Codezeilen in dieser bestimmten Reihenfolge verwenden. Sie müssen lediglich den oberen und unteren Wert der Kanteneinsätze ändern.
quelle
EXC_BAD_ACCESS
beim Aufruf von einen Fehleroverride func layoutSubviews()
.Mithilfe der Antwort von Tim C konnte ich eine Erweiterung für die
UIButton
Verwendung von Swift erstellen , mit der Sie den Bildrahmen mithilfe der.setImage()
Funktion mit einem zusätzlichenframe
Parameter angeben könnenMit diesem, wenn Sie den Rahmen eines setzen wollten
UIButton
aufCGRectMake(0, 0, 64, 64)
, und stellen Sie das Bild davonmyImage
mit einem Rahmen ausCGRectMake(8, 8, 48, 48)
, könnten Sie verwendenquelle
if let
statt zu überprüfen , obframe
ist ,nil
und dann zwingen , eine Unmenge mal auspacken .Wenn mit Symbolgröße zu ändern
UIEdgeInsetsMake(top, left, bottom, right)
, im Auge behalten Schaltfläche Dimensionen und die Fähigkeit der UIEdgeInsetsMake zur Arbeit mit negativen Werten , als ob sie positiv sind.Beispiel: Zwei Tasten mit Höhe 100 und Aspekt 1: 1.
Die Beispiele 1 und 3 sind identisch, da ABS (100 - (40 + 40)) = ABS (100 - (60 + 60))
quelle
Swift 3
Ich habe die Breite und Höhe von myButton auf 40 eingestellt und meine Polsterung von EdgeInsetsMake beträgt 15 Seiten. Ich schlage vor, Ihrer Schaltfläche eine Hintergrundfarbe hinzuzufügen, um die tatsächliche Polsterung anzuzeigen.
quelle
Ein Ansatz besteht darin, die Größe des UIImage im Code wie folgt zu ändern. Hinweis: Dieser Code wird nur nach Höhe skaliert. Sie können die Funktion jedoch problemlos so anpassen, dass sie auch nach Breite skaliert.
quelle
Aktualisiert für Swift> 5
Stellen Sie die Größe ein:
Ränder festlegen:
quelle
Aktualisiert für Swift 3
quelle
Ich denke, Ihre Bildgröße ist auch die gleiche wie die Schaltflächengröße, dann setzen Sie das Bild in den Hintergrund der Schaltfläche wie:
Sie Mast haben die gleiche Größe von Bild und Knopf. Ich hoffe, Sie verstehen meinen Punkt.
quelle