Cocoa Touch: Wie ändert man die Grenzfarbe und -dicke von UIView?
Sah ich im Inspektor, ich kann die Hintergrundfarbe ändern, aber ich möchte auch das ändern der Rahmenfarbe und-Stärke-ist das möglich?
Dank
InformationsquelleAutor der Frage foreyez | 2010-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Verwendung von view-Schicht zu setzen border-Eigenschaft. e.g:
Müssen Sie auch, um die Verknüpfung mit QuartzCore.framework um diese Funktionalität nutzen zu können.
InformationsquelleAutor der Antwort Vladimir
Xcode 6 update
Da Xcode die neueste version gibt es eine bessere Lösung:
Mit
@IBInspectable
Sie können Attribute direkt aus innerhalb dieAttributes Inspector
.Dieser legt die
User Defined Runtime Attributes
für Sie:Gibt es zwei Ansätze, um dies einzurichten:
Option 1 (mit live-Aktualisierung in der Storyboard)
MyCustomView
.UIView
.@IBDesignable
(das macht die Sicht-update-live).*@IBInspectable
MyCustomView
`
*
@IBDesignable
funktioniert nur, wenn zu Beginn derclass MyCustomView
Option 2 (funktioniert nicht, da Swift 1.2, siehe Kommentare)
Erweitern Sie Ihre UIView-Klasse:
Diese Weise, Ihre Standard-Ansicht immer hat diese extra editierbare Felder in
Attributes Inspector
. Ein weiterer Vorteil ist, dass Sie nicht haben, die Klasse zu wechseln, umMycustomView
jeder Zeit.Jedoch ein Nachteil dieser ist, dass Sie nur Ihre änderungen, wenn Sie führen Sie Ihre app aus.
InformationsquelleAutor der Antwort MMachinegun
Können Sie auch erstellen Grenze mit der Farbe Ihrer Wünsche..
*r,g,b Werte zwischen 0 bis 255.
InformationsquelleAutor der Antwort rohan-patel
Fügen Sie die folgende @IBInspectables in UIView-Erweiterung
Dann sollten Sie in der Lage sein, borderColor und borderWidth Attribute direkt aus dem Attribut-Inspektor. Siehe die beigefügten Bild
Attributes Inspector
InformationsquelleAutor der Antwort Bikramjit Singh
Wenn ich mit Wladimir CALayer-Lösung, und auf der Oberseite der anzeigen ich habe eine animation, wie ein modales UINavigationController entlassen, sehe ich eine Menge von Pannen passiert und Zeichnung, performance-Probleme.
So, ein anderer Weg, um dies zu erreichen, aber ohne die glitches und performance-Verlust, ist zu machen, um eine eigene UIView und Umsetzung der
drawRect
Meldung etwa so:InformationsquelleAutor der Antwort Nicolae Surdu
Ich würde nicht vorschlagen, überschreiben Sie die drawRect durch verursacht ein performance-hit.
Statt, ich würde ändern Sie die Eigenschaften der Klasse, wie unten (in Ihrer benutzerdefinierten uiview):
Ich nicht sehen, keine Pannen bei der Einnahme obigen Ansatz - nicht sicher, warum putting in initWithFrame Stoppt diese 😉
InformationsquelleAutor der Antwort DEzra
Versuchen, diesen code:
InformationsquelleAutor der Antwort CrazyVK
Wollte ich dieses add @marczking Antwort (Option 1) als Kommentar, aber meine niedrigen status, auf StackOverflow ist zu verhindern, dass.
Habe ich ein port von @marczking Antwort auf Objective C. Funktioniert wie Charme, Dank @marczking!
UIView+Grenze.h:
UIView+Grenze.m:
InformationsquelleAutor der Antwort spencery2
Wenn Sie nicht möchten, Bearbeiten Sie die Schicht von einem UIView, konnte man immer einbetten die Ansicht in eine andere Ansicht. Die übergeordnete Ansicht hätte seine Hintergrundfarbe, die Rahmenfarbe. Es wäre auch etwas größer, je nachdem, wie breit Sie wollen die Grenze zu sein.
Natürlich funktioniert dies nur, wenn Ihre Ansicht nicht transparent und Sie möchten nur eine einzige Rahmenfarbe. Der OP wollte die Grenze in der Ansicht selbst, aber dies kann eine sinnvolle alternative sein.
InformationsquelleAutor der Antwort Matt Becker
@IBInspectable ist, für mich zu arbeiten auf iOS 9 , Swift 2.0
InformationsquelleAutor der Antwort anhtran
InformationsquelleAutor der Antwort shaiju mathew
Wenn Sie hinzufügen möchten anderen Rahmen auf unterschiedlichen Seiten, kann fügen Sie eine Untersicht mit den spezifischen Stil ist ein Weg, einfach zu kommen mit.
InformationsquelleAutor der Antwort Yuanfei Zhu