2016-03-23 13 views
10

ich den Code verwende unter den Schatten für meine ImageViewIOS: Wie ein Schatten für UIView auf 4 Seite machen (oben, rechts, unten und links)

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:self.avatarImageView.bounds]; 
self.avatarImageView.layer.masksToBounds = NO; 
self.avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor; 
self.avatarImageView.layer.shadowOffset = CGSizeMake(5.0f, 5.0f); 
self.avatarImageView.layer.shadowOpacity = 0.8f; 
self.avatarImageView.layer.shadowPath = shadowPath.CGPath; 

Es wird zu machen Drop einen Schatten in die rechte und untere wie dieses Bild.

enter image description here

Jetzt möchte ich meine ImageView auch einen Schatten in oben und links machen müssen. Was soll ich im Code ändern? Ist es möglich, die Ansicht enthält Schatten oben, rechts, unten, links von Config nur in Code oder ich muss eine andere Layout-Ansicht für Schatten erstellen? Jede Hilfe wäre sehr geschätzt.

Hier ist, was ich
enter image description here

aktualisieren
Vielen @Dipen Panchasara erreichen wollen für eine einfache Lösung geben. Folgen @Dipen Panchasara (mit der Schattenfarbe ist schwarz) Ich werde wie dieser das Schattenbild haben
enter image description here

Antwort

20

So:

float shadowSize = 10.0f; 
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(self.avatarImageView.frame.origin.x - shadowSize/2, 
                     self.avatarImageView.frame.origin.y - shadowSize/2, 
                     self.avatarImageView.frame.size.width + shadowSize, 
                     self.avatarImageView.frame.size.height + shadowSize)]; 
self.avatarImageView.layer.masksToBounds = NO; 
self.avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor; 
self.avatarImageView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); 
self.avatarImageView.layer.shadowOpacity = 0.8f; 
self.avatarImageView.layer.shadowPath = shadowPath.CGPath; 

Swift 3 Version:

let shadowSize : CGFloat = 5.0 
    let shadowPath = UIBezierPath(rect: CGRect(x: -shadowSize/2, 
               y: -shadowSize/2, 
               width: self.avatarImageView.frame.size.width + shadowSize, 
               height: self.avatarImageView.frame.size.height + shadowSize)) 
    self.avatarImageView.layer.masksToBounds = false 
    self.avatarImageView.layer.shadowColor = UIColor.black.cgColor 
    self.avatarImageView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0) 
    self.avatarImageView.layer.shadowOpacity = 0.5 
    self.avatarImageView.layer.shadowPath = shadowPath.cgPath 
+0

Dies gibt den Schatten für 4 Seite (oben: 5, links: 5, unten: 10, rechts: 10). arbeiten perfekt, danke –

19

Nur der folgende Code erledigt die Aufgabe für Ihre Anforderung. Sie müssen UIBezierPath für den Schattenpfad nicht erstellen.

// *** Set masks bounds to NO to display shadow visible *** 
self.avatarImageView.layer.masksToBounds = NO; 
// *** Set light gray color as shown in sample *** 
self.avatarImageView.layer.shadowColor = [UIColor lightGrayColor].CGColor; 
// *** *** Use following to add Shadow top, left *** 
self.avatarImageView.layer.shadowOffset = CGSizeMake(-5.0f, -5.0f); 

// *** Use following to add Shadow bottom, right *** 
//self.avatarImageView.layer.shadowOffset = CGSizeMake(5.0f, 5.0f); 

// *** Use following to add Shadow top, left, bottom, right *** 
// avatarImageView.layer.shadowOffset = CGSizeZero; 
// avatarImageView.layer.shadowRadius = 5.0f; 

// *** Set shadowOpacity to full (1) *** 
self.avatarImageView.layer.shadowOpacity = 1.0f; 
+0

Was ist das Problem in gegebenem Code? es funktioniert perfekt. –

+0

Vielen Dank für Ihre Antwort, aber folgen Sie Ihrem Code Ich werde den Schatten in der oberen linken Ecke haben. Aber was ich will ist, ich möchte einen Schatten in der oberen rechten unteren linken haben. Vielleicht erkläre ich es nicht sehr gut. Vielen Dank für deine Zeit. Ich habe es nicht downvote :( –

+0

Ich habe Code für alle 3 Möglichkeiten hinzugefügt. –

0

CGRectInset (self.avatarImageView.bounds, -10,0, -10,0)

0

wenig weniger Code für eine schnelle 3:

view.layer.shadowColor = UIColor.black.cgColor 
    view.layer.shadowOpacity = 0.7 
    view.layer.shadowOffset = CGSize.zero 
    view.layer.shadowRadius = 4 
    view.layer.shadowPath = UIBezierPath(rect: planView.bounds).cgPath 
0

Für UIView und Hinzufügen von Schatten, erinnern Hintergrundfarbe einstellen zur UIView.

Wenn die Hintergrundfarbe clearColor ist, wird kein Schatten angezeigt.

Verwandte Themen