我正在尝试使用layer.shadowColor,Offset,Radius向UITableViewCell添加阴影,但它似乎不会以任何方式影响它。该表是分组样式。有什么想法吗?
以下是我正在使用的代码:
cell.layer.shadowColor= [UIColor blackColor].CGColor;
cell.layer.shadowRadius = 5.0;
cell.layer.shadowOffset = CGSizeMake(10, 10);
答案 0 :(得分:61)
您还需要设置阴影不透明度,默认为0,如果没有明确设置它,您将看不到任何内容。
cell.layer.shadowOffset = CGSizeMake(1, 0);
cell.layer.shadowColor = [[UIColor blackColor] CGColor];
cell.layer.shadowRadius = 5;
cell.layer.shadowOpacity = .25;
另请注意,如果您未设置阴影路径,则iPhone / iPad上的性能会非常糟糕。使用类似下面的代码来设置阴影路径,它不需要模糊tableviewcell下面的图层来创建“高质量”阴影。
CGRect shadowFrame = cell.layer.bounds;
CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath;
cell.layer.shadowPath = shadowPath;
观看视频425(也是424和426),详细了解WWDC 2010视频中的阴影:WWDC 2010 Session Videos
答案 1 :(得分:17)
在Swift中添加@Paul Soult答案:
cell?.layer.shadowOffset = CGSizeMake(0, 1)
cell?.layer.shadowColor = UIColor.blackColor().CGColor
cell?.layer.shadowRadius = 1
cell?.layer.shadowOpacity = 0.6
// Maybe just me, but I had to add it to work:
cell?.clipsToBounds = false
let shadowFrame: CGRect = (cell?.layer.bounds)!
let shadowPath: CGPathRef = UIBezierPath(rect: shadowFrame).CGPath
cell?.layer.shadowPath = shadowPath
答案 2 :(得分:2)
分组表格视图单元格的视图层次结构实际上相当不透明。 cell.layer实际上指的是单元格主视图的层,它占据了表格的整个宽度。插入的单元格的圆角部分实际上由apple的私有方法处理,用于绘制分组的单元格。
您可能会更幸运地创建UITableViewCell的自定义子类。