Las properties de CALayer (por ejemplo: colocar sombras) no aparecen en todas las celdas UITableView

Entonces tengo una UIView en un prototipo UITableViewCell . En el método awakeFromNib esa vista, tengo el siguiente código para crear una sombra

 CALayer *layer = self.layer; layer.cornerRadius = 5.0f; // Makes shadow for each cell in all and nearby table views. CGSize size = self.bounds.size; CGFloat curlFactor = 15.0f; CGFloat shadowDepth = 5.0f; UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(0.0f, 0.0f)]; [path addLineToPoint:CGPointMake(size.width, 0.0f)]; [path addLineToPoint:CGPointMake(size.width, size.height + shadowDepth)]; [path addCurveToPoint:CGPointMake(0.0f, size.height + shadowDepth) controlPoint1:CGPointMake(size.width - curlFactor, size.height + shadowDepth - curlFactor) controlPoint2:CGPointMake(curlFactor, size.height + shadowDepth - curlFactor)]; self.layer.shadowColor = [UIColor blackColor].CGColor; self.layer.shadowOpacity = 0.3f; self.layer.shadowOffset = CGSizeMake(2.0f, 7.0f); self.layer.shadowRadius = 2.0f; self.layer.masksToBounds = NO; self.layer.shadowPath = path.CGPath; //Sets a path for the shadow. Greatly enhances performance. 

El problema es que la sombra solo aparece en algunas celdas, no todas y parece ser aleatoria a veces. Intenté poner el código en viewWillAppear y viewDidAppear pero tampoco funcionó en set. ¿Alguien tiene una pista de lo que posiblemente pueda estar causando esto?

Finalmente me di count de que el problema es que no faltaban las sombras, solo estaban superpuestas por otras celdas.

Entonces, esta respuesta puede resolver el problema (necesitará sendSubviewToBack: en este caso).

Para su información, el nuevo UICollectionView en iOS 6 le dará más control sobre los índices z de las celdas, y para el soporte anterior a iOS 6, PSTCollectionView es una buena alternativa.