iphone – 将一个大于cellHeight的子视图添加到UITableViewCell?

我试图添加一个子视图到一个UITableViewCell和我正在工作的设计要求这个特定的子视图(一个图像)需要比实际的UITableViewCell大,从而部分地重叠其兄弟姐妹.

所以我设置了我的表格单元格,生成了我的图像并将其添加到单元格的contentView中:

// rowHeight for the UITableView is 45.0f

UIImage *image = [self createCellThumbnail: someImage];
UIImageView *thumbView = [[UIImageView alloc] initWithFrame: CGRectMake(150, -5, 55,55)];
thumbView.transform = CGAffineTransformMakeRotation(0.1f);
thumbView.image = image;

cell.clipsToBounds = NO;
cell.contentView.clipsToBounds = NO;

[cell.contentView addSubview: thumbView];

当图像将“溢出”到其下方的单元格中时,图像的顶部将始终被剪切,如下所示:

img

有人知道我想要做什么是否可以使用目前的方法?

或者我应该找出一种在绘制所有单元格之后将这些图像绘制到UITableView上的方法(这是一个不可滚动的表格视图,这样可以很方便).

更新:

还尝试添加以下内容,无效:

cell.opaque = NO;
cell.contentView.opaque = NO;

cell.clearsContextBeforeDrawing = NO;
cell.contentView.clearsContextBeforeDrawing = NO;

cell.clipsToBounds = NO;    
cell.contentView.clipsToBounds = NO;
最佳答案
我似乎tableView从底部到顶层渲染它的单元格,所以一个单元格上面的单元格与一个单元格重叠.为了避免这种情况,您必须将所有单元格的backgroundColor设置为[UIColor clearColor],以便您不会看到这些重叠问题.

但是在-tableView中设置backgroundColor要清除:cellForRowAtIndexPath:没有任何意义. UIKit在绘制之前,会对单元格做很多事情,因此它会重置单元格的backgroundColor属性.

我们需要做的是将backgroundColor设置为稍后的状态.幸运的是,我们可以这样实现这个 – [UITableViewDelegate tableView:willDisplayCell:forRowAtIndexPath:]:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor clearColor];
}

现在我们在单元格绘制之前设置backgroundColor,这样就可以正常工作了.

转载注明原文:iphone – 将一个大于cellHeight的子视图添加到UITableViewCell? - 代码日志