Ich habe UI-Elemente in einer Skizze entworfen, und eines davon hat einen Schatten mit Unschärfe 1 und Streuung 0. Ich habe im Dokument nach der Eigenschaft Layer für Ansichten gesucht, und die Ebene hat nichts mit dem Namen Streuung oder Unschärfe oder etwas Äquivalentes (das einzige Steuerelement war nur shadowOpacity) Wie kann man Dinge wie Unschärfe und Ausbreitung kontrollieren?
BEARBEITEN:
Hier sind meine Einstellungen in Sketch:
Und so soll mein Schatten aussehen:
Und so sieht es im Moment aus: Beachten Sie, dass Sie auf das Bild klicken müssen, um den Schatten tatsächlich zu sehen.
Mein Code lautet wie folgt:
func setupLayer(){
view.layer.cornerRadius = 2
view.layer.shadowColor = Colors.Shadow.CGColor
view.layer.shadowOffset = CGSize(width: 0, height: 1)
view.layer.shadowOpacity = 0.9
view.layer.shadowRadius = 5
}
ios
swift
uiview
core-graphics
Quantaliinuxit
quelle
quelle
Antworten:
So wenden Sie alle 6 Sketch-Schatteneigenschaften mit nahezu perfekter Genauigkeit auf die Ebene eines UIView an:
Angenommen, wir möchten Folgendes darstellen:
Sie können dies einfach tun über:
oder prägnanter:
Beispiel:
Hinweis:
spread
wird ein Pfad basierend auf dembounds
des CALayer fest codiert. Wenn sich die Grenzen der Ebene jemals ändern, möchten Sie dieapplySketchShadow()
Methode erneut aufrufen .quelle
maskToBounds = false
.maskToBounds = false
. Ein Beispiel, bei dem dies fehlschlägt, ist das Anwenden dieses Schattens auf einUIButton
.shadowRadius = blur / UIScreen.main.scale
im Gegensatz zu Hardcodierung seinblur / 2.0
? Oder gibt es einen anderen Grund, durch 2 zu teilen? @matchifang Hast du das herausgefunden?Sie können dies versuchen ... Sie können mit den Werten spielen. Das bestimmt
shadowRadius
die Menge der Unschärfe.shadowOffset
diktiert, wohin der Schatten geht.quelle
Skizzenschatten mit IBDesignable und IBInspectable in Swift 4
quelle
layer.shadowRadius * 2
für shadowBlur getterDieser Code hat bei mir sehr gut funktioniert:
quelle
Für diejenigen, die versuchen, einen Schatten auf einen vordefinierten Pfad anzuwenden (wie zum Beispiel für eine Kreisansicht), habe ich Folgendes erhalten:
Ich werde später einige Beispiele veröffentlichen, aber dies hat für mich bei kreisförmigen Ansichten genau funktioniert.
quelle
1
mitx
und verwendeny
0
shapeLayer.applyShadow(color: .black, alpha: 1, x: 0, y: 0, blur: 0, spread: 1, path: path)
. In diesem Fall hat der Schatten einen Versatz, während dies nicht der Fall sein sollte. Hier sollte das Dreieck hat den Schatten Ausbreitung 1px in alle Richtungen ibb.co/YjwRb9BMeine Lösung basierend auf diesem Beitrag antwortet: (Swift 3)
quelle
Ich mag die hier gepostete Antwort und die Vorschläge in den Kommentaren sehr. So habe ich diese Lösung geändert:
VERWENDUNG:
quelle
Es mag ein wenig in der Geschichte sein, aber vielleicht hatten einige das gleiche Problem. Ich habe ein Codebeispiel aus einer akzeptierten Antwort verwendet. Die Effekte sind jedoch sehr unterschiedlich: - Der y-Wert muss ungefähr halb so groß sein wie der gleiche Wert in der Skizze. - Ich habe versucht, Schatten auf die Navigationsleiste anzuwenden, und der Effekt ist schrecklich unterschiedlich - kaum sichtbar, wenn dieselben Werte wie in der Skizze verwendet werden.
Es scheint also, dass die Methode die Skizzenparameter überhaupt nicht widerspiegelt. Irgendwelche Hinweise?
quelle