Пользовательский фоновый рисунок в сгруппированном UITableViewCell - PullRequest
1 голос
/ 15 сентября 2011

У меня возникают некоторые проблемы при рисовании пользовательского градиентного фона в UITableViewCell, когда стиль установлен как «сгруппированный» и ячейка является первой или последней в разделе. Мой подход заключается в том, чтобы просто создать CAGradientLayer и добавить его в представление следующим образом:

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = rect;
gradient.colors = [NSArray arrayWithObjects:(id)[_backgroundColorLight CGColor], (id)[_backgroundColorDark CGColor], nil];
[self.backgroundView.layer insertSublayer:gradient atIndex:0];
self.backgroundView.layer.masksToBounds = YES;

К сожалению, это производит клетки, подобные этой: Background exceeding the edges

У кого-нибудь есть подсказка, как сделать фон подходящим для границ ячейки?

Спасибо
-f

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Если вы рисуете собственный фон, вы также должны нарисовать границы самостоятельно.Там есть довольно много вещей с открытым исходным кодом.

По сути, вам нужно знать [в ячейке], является ли он верхним / средним / нижним / одиночным, и вырезать его в drawRect.Вы не продвинетесь далеко с insertSublayer.

Проверьте класс PageCellBackground, который вы найдете здесь: http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

1 голос
/ 16 сентября 2011

Я не пробовал, но CAGradientLayer является подклассом CALayer, поэтому, возможно, установка его borderRadius может сработать.Но тогда он закругляет все углы, так что вы можете компенсировать это, сделав слой больше, чем ячейка, и обрезать вид из него.

Посмотрите на Округленный UIView с использованием CALayers - только некоторые углы -Как? для дополнительных примеров

...