2013-01-08 7 views
6

Hallo Ich mag einen CALayer Schatten auf einen Blick hinzuzufügen, wo der Schatten übrig war und rechts neben der Ansicht der einfachste Weg war:Schatten links und rechts von UIView

someView.layer.shadowColor = [[UIColor blackColor] CGColor]; 
someView.layer.shadowOffset = CGSizeMake(0.0f,0.0f); 
someView.layer.shadowOpacity = 1.0f; 
someView.layer.shadowRadius = 10.0f; 
someView.layer.shadowPath = [[UIBezierPath bezierPathWithRect:someView.bounds] CGPath]; 

aber ich werde einen größeren Schatten hinzufügen, Wie ein Schatten, wenn ich den Schattenradius vergrößere, sieht es nicht gut aus. Wie ich einen Schatten machen kann, der links und rechts gut aussieht.

Antwort

26

ich 10 denke, ist ein ziemlich großer Schatten Radius versuchen, 3 oder 4 statt, auch Opazität ich in der Regel 0,7 verwenden:

someView.layer.shadowColor = [[UIColor blackColor] CGColor]; 
someView.layer.shadowOffset = CGSizeMake(0.0f,0.0f); 
someView.layer.shadowOpacity = 0.7f; 
someView.layer.shadowRadius = 4.0f; 

Wenn Sie den Schatten nur links und rechts wollen, dann Inset das Rechteck auf die oben und unten, so dass die oberen und unteren Schatten hinter Ihrer Sicht versteckt:

CGRect shadowRect = CGRectInset(someView.bounds, 0, 4); // inset top/bottom 
someView.layer.shadowPath = [[UIBezierPath bezierPathWithRect:shadowRect] CGPath]; 

ich bin nicht wirklich sicher, ob das ist, was Sie wollten.

+0

ich mit meinem Designer dieser Schatten zu klein gesprochen ist. Ich brauche verschiedene x Offsets links und rechts. – Zeropointer

+0

Erstaunliche Antwort, Aber Leute haben jemand dies mit abgerundeten Ecken (mehr glatt) implementiert, da dieser Rect-ähnliche Schatten schlecht aussieht. Irgendwelche Einsichten? Danke im Voraus ! :) –

+0

Benutze bezierPathWithRoundedRect statt – progrmr

0

progrmrs Antwort war sehr hilfreich, Prost!

Ich habe ein Slide-Out-Menü erstellt, und ich hatte ein Problem mit dem Schatten, der meine VC umgibt und die Navigationsleiste stört. Es stellte sich heraus, dass ich die Schattenschicht einlegen musste.

Hier ist meine Lösung mit swift:

rightViewController!.view.layer.shadowOpacity = 0.8 
rightViewController!.view.layer.shadowOffset = CGSizeMake(0, 3) 
rightViewController!.view.layer.shadowRadius = 4.0 

let shadowRect: CGRect = CGRectInset(rightViewController!.view.bounds, 0, 4); // inset top/bottom 
rightViewController!.view.layer.shadowPath = UIBezierPath(rect: shadowRect).CGPath 
4

swift Version 3.0

imageView.layer.shadowOpacity = 0.8 
imageView.layer.shadowOffset = CGSize(width: 0, height: 3) 
imageView.layer.shadowRadius = 4.0 

let shadowRect: CGRect = imageView.bounds.insetBy(dx: 0, dy: 4) 
imageView.layer.shadowPath = UIBezierPath(rect: shadowRect).cgPath 
Verwandte Themen