2016-05-04 23 views
7

Ich muss einen Schatten für die Zellen in einem UICollectionView erstellen. Ich habe die Zellen unterklassiert und im Inneren des layoutSubviews Ich habe den folgenden Code hinzugefügt:So erstellen Sie einen Schatten für UICollectionViewCell

-(void)layoutSubviews{ 

    [super layoutSubviews]; 

    self.layer.masksToBounds = NO; 
    self.layer.shadowOpacity = 0.75f; 
    self.layer.shadowRadius = 5.0f; 
    self.layer.shadowOffset = CGSizeZero; 
    self.layer.shadowColor = [UIColor blackColor].CGColor; 
    self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath; 


} 

Aber die Zellen höher wird und das ist das Ergebnis:

enter image description here

Wenn ich entfernen die:

Die Zellen werden korrekt angezeigt (mit einem Abstand von 10px zwischen ihnen), aber der Schatten ist nicht sichtbar. Was mache ich falsch? Ist es auch richtig, den Schatten innerhalb der layoutSubviews Methode hinzuzufügen?

+0

tun Sie Lücke zwischen den Zellen benötigen? setze shadowoffset und entferne shadowpath. –

+0

@VasanthanPrem ja Ich brauche Abstand zwischen den Zellen, wenn ich den Code in layoutSubviews entfernen kann ich den Abstand richtig sehen, aber mit diesem Code, um einen Schatten hinzuzufügen, führt dazu, dass die Zellen keinen Abstand zwischen ihnen haben – Signo

Antwort

0

es gefunden, habe ich vergessen, diese Zeile in der layoutSubviews hinzuzufügen:

self.clipsToBounds = YES; 

beide Abstand Nun hat die Zellen und Schatten

6

Sie müssen den Schatten ermöglichen, außerhalb der Grenzen geschaffen werden;

[cell.layer setMasksToBounds:NO]; 
3
func dropShadow() { 
    self.layer.masksToBounds = false 
    self.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25).cgColor    
    self.layer.shadowOpacity = 0.5 
    self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
    self.layer.shadowRadius = 4.0  
    self.layer.cornerRadius = 5.0 
} 

//Direct Add Shadow to cell 

Cell.dropShadow() 
Verwandte Themen