Ich verwende in meiner App eine benutzerdefinierte Schaltfläche mit dem Namen "addButton" und möchte sie mit weißer Farbe umrahmen. Wie kann ich die weiße Farbe um meine benutzerdefinierte Schaltfläche herum einrahmen?
ios
objective-c
iPhone
quelle
quelle
Antworten:
Sie können die Randeigenschaften im CALayer festlegen, indem Sie auf die Ebeneneigenschaft der Schaltfläche zugreifen.
Fügen Sie zuerst Quarz hinzu
Eigenschaften festlegen:
Sehen:
https://developer.apple.com/documentation/quartzcore/calayer#//apple_ref/occ/cl/CALayer
Mit dem CALayer im obigen Link können Sie andere Eigenschaften wie Eckenradius, maskToBounds usw. festlegen.
Auch ein guter Artikel über Knopfspaß:
https://web.archive.org/web/20161221132308/http://www.apptite.be/tutorial_custom_uibuttons.php
quelle
CGColor
Es ist sehr einfach, fügen Sie einfach den quartzCore-Header in Ihre Datei ein (dafür müssen Sie das Quarz-Framework zu Ihrem Projekt hinzufügen).
und dann mach das
Sie können die Float-Werte nach Bedarf ändern.
genießen.
Hier ist ein typischer moderner Code ...
Das sieht ähnlich aus wie bei segmentierten Steuerelementen.
Mach einfach:
quelle
Und in Kürze müssen Sie "QuartzCore / QuartzCore.h" nicht importieren.
Benutz einfach:
oder
quelle
Das Problem der Schicht der Einstellung
borderWidth
undborderColor
ist , dass die , wenn Sie die Taste berühren nicht die Grenze nicht den Highlight - Effekt animieren.Natürlich können Sie die Ereignisse der Schaltfläche beobachten und die Rahmenfarbe entsprechend ändern, aber das ist unnötig.
Eine weitere Option besteht darin, ein dehnbares UIImage zu erstellen und es als Hintergrundbild der Schaltfläche festzulegen. Sie können einen Bildsatz in Ihren Images.x-Kassetten wie folgt erstellen:
Dann legen Sie es als Hintergrundbild der Schaltfläche fest:
Wenn es sich bei Ihrem Bild um ein Vorlagenbild handelt, können Sie die Farbtonfarbe der Schaltfläche festlegen. Der Rand ändert sich:
Jetzt wird der Rand beim Berühren mit dem Rest der Schaltfläche hervorgehoben.
quelle
borderWidth
.Um die Schaltfläche Radius, Farbe und Breite zu ändern, stelle ich Folgendes ein:
quelle
Hier ist eine aktualisierte Version ( Swift 3.0.1 ) von Ben Packards Antwort .
Die resultierende Schaltfläche kann dank der Tags
@IBDesignable
und in Ihrem StoryBoard verwendet werden@IBInspectable
.Mit den beiden definierten Eigenschaften können Sie die Rahmenbreite und -farbe direkt im Interface Builder festlegen und eine Vorschau des Ergebnisses anzeigen.
Andere Eigenschaften könnten auf ähnliche Weise hinzugefügt werden, um den Randradius und die Überblendzeit hervorzuheben.
quelle
prepareForInterfaceBuilder
nur von IB aufgerufen wird, nicht wenn Sie die App ausführen. Setzen Sie also auch die UIEdgeInsets einawakeFromNib
, dann wird es auch beim Ausführen der App angezeigt .Sie müssen jetzt nicht importieren
QuartzCore.h
. Nehmen Sie iOS 8 SDK und Xcode 6.1 als Referenz.Direkt verwenden:
quelle
Hier ist ein
UIButton
Unterklasse, die die Animation mit hervorgehobenem Status ohne Verwendung von Bildern unterstützt. Außerdem wird die Rahmenfarbe aktualisiert, wenn sich der Farbtonmodus der Ansicht ändert.Verwendung:
let button = BorderedButton(style: .System) //style .System is important
Aussehen:
quelle
Dies kann mit verschiedenen Methoden in Swift 3.0 erreicht werden. Arbeitete an der neuesten Version von August bis 2017
Weisen Sie die borderWidth-Eigenschaftswerte für die UI-Schaltfläche direkt zu:
Titel mit Standardfarbwerten für die UI-Schaltfläche festlegen:
Festlegen des Rahmens mit der Standardfarbe für die Rahmeneigenschaftswerte für die UI-Schaltfläche:
Festlegen der benutzerdefinierten Farbe für die Rahmeneigenschaftswerte für die UI-Schaltfläche:
Verwenden Sie die Erweiterungsmethode, damit die Schaltfläche in der gesamten Anwendung konsistent aussieht und nicht überall mehrere Codezeilen wiederholt werden müssen.
Verwendung im Code:
Ausgabe der Erweiterungsmethode Schaltfläche:
quelle
Update mit Swift 3
quelle
**** In Swift 3 ****
Rand erstellen
Ecke abgerundet machen
quelle
Swift 5
Um die Farbe des Rahmens zu ändern, verwenden Sie
quelle