2017-02-06 1 views
0

J'ai UIView dans ma cellule. UICollectionview premières charges, les ombres ne regardent pas comme je l'ai prévu. Mais quand je défile, les ombres deviennent normales.swift - L'ombre d'UIVue ne s'affiche pas correctement

 self.backView.layer.cornerRadius = 3 
     self.backView.clipsToBounds = true 
     self.backView.layer.shadowPath = UIBezierPath(roundedRect: self.backView.bounds, cornerRadius: self.backView.layer.cornerRadius).CGPath 
     self.backView.layer.shadowColor = UIColor.blackColor().CGColor 
     self.backView.layer.shadowOpacity = 0.3 
     self.backView.layer.shadowOffset = CGSizeMake(0, 1) 
     self.backView.layer.shadowRadius = 1 
     self.backView.layer.masksToBounds = false 

Ombres rendus mal:

wrong

Ombres rendus correctement:

enter image description here

Edit-1: J'ai trouvé la cause, mais pas la solution. cadre de cellule du story-board et le cadre cellulaire du temps d'exécution sont différentes parce que je change la hauteur de cellule & largeur comme ceci:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
     return CGSizeMake(collectionView.frame.width/3, collectionView.frame.height) 
    } 

Alors, quand je retire ce code, les ombres sont affichées correctement. Mais je ne peux pas définir la hauteur & hauteur via le code.

+0

Où avez-vous géré ce code? – nynohu

+0

à l'intérieur de collectionViewCell –

+0

affichez du code supplémentaire –

Répondre

1

vous pouvez essayer cette

self.backView.layer.shadowColor = UIColor.black.cgColor 
self.backView.layer.shadowOpacity = 1 
self.backView.layer.shadowOffset = CGSize.zero 
self.backView.layer.shadowRadius = 2