CALayer properties (e.g. shadows) are not displayed on all UITableViewCells

So the prototype UITableViewCell has a UIView . In this view of awakeFromNib , I have the following code to make a shadow

 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. 

The problem is that the shadow appears only in some cells, and not in all, and sometimes it seems random. I tried putting the code in viewWillAppear and viewDidAppear , but it didn’t work together either. Does anyone know what could be causing this?

+4
source share
1 answer

Finally, I realized that the problem is that the shadows of the shadow do not disappear, they just overlap with other cells.

So this answer can solve the problem (in this case you will need sendSubviewToBack: .

FYI, the new UICollectionView in iOS 6 will give you more control over the z-indexes of the cell, and for pre-iOS 6, PSTCollectionView support is a good alternative.

+3
source

Source: https://habr.com/ru/post/1445343/


All Articles