防止 CAGradientLayer 在 UITableViewCell 上的 UIImageView 内重叠
Posted
技术标签:
【中文标题】防止 CAGradientLayer 在 UITableViewCell 上的 UIImageView 内重叠【英文标题】:Prevent CAGradientLayer from Overlapping inside UIImageView on UITableViewCell 【发布时间】:2014-07-02 10:36:01 【问题描述】:我在我的cellForRowAtIndexPath
方法中使用Storyboards
在我的自定义UITableViewCell
中应用渐变,我想防止CAGradientLayer
渐变的应用重叠。我该怎么做?
这是我当前用来防止重叠的代码,但渐变仅适用于 UITableView
中加载的最新 indexPath
- (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;
【讨论】:
以上是关于防止 CAGradientLayer 在 UITableViewCell 上的 UIImageView 内重叠的主要内容,如果未能解决你的问题,请参考以下文章
在 CAGradientLayer 上方显示 SCNScene