Einen Schatten für ein UIImageView, hat abgerundete Ecken?
Ich versuche zum erstellen einer ImageView
, hat abgerundete Ecken und einen Schatten, um ihm etwas Tiefe. Ich war in der Lage zu schaffen, ein Schatten für die UIImageView
, aber immer wenn ich den code Hinzugefügt, um auch abgerundete Ecken haben, es hatte nur abgerundete Ecken mit keine Schatten. Ich habe eine IBOutlet
namens myImage
, und es ist in der viewDidLoad
Funktion. Hat jemand irgendwelche Ideen auf, wie zu make es die Arbeit? Was mache ich falsch?
override func viewDidLoad() {
super.ViewDidLoad()
myImage.layer.shadowColor = UIColor.black.cgColor
myImage.layer.shadowOpacity = 1
myImage.layer.shadowOffset = CGSize.zero
myImage.layer.shadowRadius = 10
myImage.layer.shadowPath = UIBezierPath(rect: myImage.bounds).cgPath
myImage.layer.shouldRasterize = false
myImage.layer.cornerRadius = 10
myImage.clipsToBounds = true
}
Wenn Sie
Ich würde empfehlen, setzen
So dann setzen Sie einfach die clipsToBounds = false ?
Clips Grenzen auf true gesetzt wird clip-Ecken, sondern wird geschnitten Schatten. Das ist, warum Sie benötigen zwei Ansichten. Ein Behälter mit einem shadow, die ich abgeschnitten Grenzen mit einem Bild im inneren mit gestutzten Grenzen und einen Eckenradius.
Also, wenn ich verstehe richtig das
clipsToBounds = true
Sie werden nie in der Lage, um zu sehen, einen Schatten, der geht über die Grenzen.Ich würde empfehlen, setzen
myImage
in einer anderen Ansicht, die nicht die clipping-Grenzen und wenden Sie den Schatten auf, die anzeigen.So dann setzen Sie einfach die clipsToBounds = false ?
Clips Grenzen auf true gesetzt wird clip-Ecken, sondern wird geschnitten Schatten. Das ist, warum Sie benötigen zwei Ansichten. Ein Behälter mit einem shadow, die ich abgeschnitten Grenzen mit einem Bild im inneren mit gestutzten Grenzen und einen Eckenradius.
Also, wenn ich verstehe richtig das
myImage
im inneren des neuen UIView, die nicht abschneiden Ecken und einen Schatten ??InformationsquelleAutor John Hodge | 2017-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
clipsToBounds
zutrue
, wird diese Runde die Ecken, sondern auch verhindern, dass der Schatten erscheint. Um diese zu lösen, können Sie auch zwei Ansichten. Der container-Ansicht haben sollte, der Schatten, und dessen Untersicht sollte die abgerundeten Ecken.Der container-Ansicht hat
clipsToBounds
eingestelltfalse
, und hat die Schatten-Eigenschaften angewendet. Wenn Sie möchten, dass der Schatten auf die gerundet werden sowie, verwenden Sie dieUIBezierPath
Konstruktor, in einemroundedRect
undcornerRadius
.Als Nächstes legen Sie die Bild-Ansicht (oder jede andere Art von
UIView
) auf die gleiche Größe der container anzuzeigen, legen SieclipsToBounds
zutrue
, und geben Sie einencornerRadius
.Schließlich erinnern, um das Bild anzuzeigen, eine Untersicht der container-Ansicht.
Das Ergebnis sollte in etwa so Aussehen:
Perfekte Antwort, Mann.
outerView.backgroundColor = UIColor.klar;
Standardmäßig wird eine
UIView
's hintergrund-Farbe ist klar. Wenn Sie es schaffen, in die storyboard-und die Hintergrundfarbe (standardmäßig weiß), und Sie brauchen, um es zu deaktivieren. Auch in Swift gibt es keine Notwendigkeit für Semikolons.Super Antwort !!
InformationsquelleAutor nathangitter
Hier ist eine andere Lösung (getestet) in swift 2.0
Wenn Sie clipsToBounds zu wahren, wird diese Runde die Ecken, sondern auch verhindern, dass der Schatten erscheint. Also, Sie können hinzufügen, gleiche Größe-Ansicht in der storyboard-hinter Bildansicht und die wir geben können, Schatten, die anzeigen
SWIFT 2.0
InformationsquelleAutor Hardik Thakkar