#ios #objective-c #uitableview #gradient #cagradientlayer
#iOS #objective-c #uitableview #градиент #cagradientlayer
Вопрос:
Я применяю градиент в своем пользовательском, UITableViewCell
используя Storyboards
внутри моего cellForRowAtIndexPath
метода, и я хотел, чтобы мое применение CAGradientLayer
градиента не перекрывалось. Как я могу это сделать?
Это мой текущий код, который я использую, чтобы предотвратить его перекрытие, но градиент применяется только к последнему, indexPath
загруженному в UITableView
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
VideoTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"VideoCell" forIndexPath:indexPath];
if (!gradientLayer) {
gradientLayer = [CAGradientLayer layer];
}
gradientLayer.frame = cell.backgroundImage.bounds;
gradientLayer.colors = @[(id)[UIColor blackColor].CGColor, (id)[UIColor clearColor].CGColor];
[cell.backgroundImage.layer insertSublayer:gradientLayer atIndex:0];
return cell;
}
Мой cell.backgroundImage
— это просто UIImageView
, где я загружаю изображение и применяю к нему градиент.
Ответ №1:
Я нашел ответ, который работает. Я просто установил для своих подслоев BackgroundImage значение nil перед применением градиента.
cell.backgroundImage.layer.sublayers = nil;