iPhone UITableViewCell слой тени - PullRequest
       8

iPhone UITableViewCell слой тени

22 голосов
/ 23 августа 2010

Я пытаюсь добавить тень к UITableViewCell, используя layer.shadowColor, Offset, Radius, но, похоже, это никак не влияет.Стол сгруппирован по стилю.Есть идеи, почему?

Вот код, который я использую:

cell.layer.shadowColor= [UIColor blackColor].CGColor;
cell.layer.shadowRadius = 5.0;
cell.layer.shadowOffset = CGSizeMake(10, 10);

Ответы [ 3 ]

62 голосов
/ 15 февраля 2011

Вам также нужно установить непрозрачность тени, по умолчанию она равна 0, и вы ничего не увидите, если не установите ее явно.

CALayer Reference

cell.layer.shadowOffset = CGSizeMake(1, 0);
cell.layer.shadowColor = [[UIColor blackColor] CGColor];
cell.layer.shadowRadius = 5;
cell.layer.shadowOpacity = .25;

Также обратите внимание, что если вы не установите путь тени, у вас будет ужасная производительность на iPhone / iPad.Используйте что-то вроде следующего кода, чтобы установить путь тени, это устраняет необходимость размытия слоев под ячейками таблицы, чтобы создать «высококачественную» тень.чтобы узнать больше о тенях из видео WWDC 2010, доступных здесь: Видео сессии WWDC 2010

18 голосов
/ 28 сентября 2015

Просто добавив ответ @Paul Soult в Swift:

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 голосов
/ 24 августа 2010

Иерархия представления сгруппированной ячейки табличного представления действительно довольно непрозрачна. cell.layer фактически ссылается на слой основного вида ячейки, который занимает всю ширину таблицы. Закругленная часть вставленной ячейки фактически обрабатывается частными методами Apple для рисования сгруппированных ячеек.

Вероятно, вам повезет больше, если вы создадите собственный подкласс UITableViewCell.

...