UICollectionViewCell -- 使 selectedBackgroundView 比单元格本身大

Posted

技术标签:

【中文标题】UICollectionViewCell -- 使 selectedBackgroundView 比单元格本身大【英文标题】:UICollectionViewCell -- make selectedBackgroundView bigger than cell itself 【发布时间】:2020-06-04 23:53:46 【问题描述】:

我正在想办法让我的单元格 selectedBackgroundView 大于单元格本身。

我的以下方法旨在使 selectedBackgroundView: 单元格的超视图宽度(屏幕的整个宽度)X 单元格的高度

UIView *bg = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.superview.frame), CGRectGetHeight(cell.frame))];
bg.backgroundColor = [UIColor redColor];
cell.selectedBackgroundView = bg;

当这个单元格被选中时,背景颜色只在单元格的范围内延伸(不超过父视图的高度)

我怎样才能最好地完成使 selectedBackgroundView 大于单元格?我在这里采取了完全错误的方法吗?

【问题讨论】:

解决方案是为背景的所有父视图关闭剪辑到边界。 【参考方案1】:

正如我测试的那样,selectedBackgroundView 的框架是不变的,你的 bg 的宽度变化不起作用。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    UITableViewCell * cell = [tableView cellForRowAtIndexPath: indexPath];
    CGRect f = CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height);
    f.size.height += 20;
    f.origin.y -= 10;
    UIView *bg = [[UIView alloc] initWithFrame: f];
    bg.backgroundColor = [UIColor redColor];
    [cell.contentView addSubview: bg];
    cell.contentView.clipsToBounds = false;

【讨论】:

以上是关于UICollectionViewCell -- 使 selectedBackgroundView 比单元格本身大的主要内容,如果未能解决你的问题,请参考以下文章

使 UICollectionViewCell 出现在 UICollectionView 的中心

Swift:使 UIGestureRecognizer 只影响一个 UICollectionViewCell 而不是全部

使 UICollectionViewCell 的一部分不可点击

在 UICollectionViewCell 上设置 .reuseIdentifier

UICollectionViewCell 不是圆角

UICollectionViewCell 不适合设备屏幕