我需要圆形,可变高度的tableview单元格。
我使用以下代码创建圆角背景:
- (void)roundView:(UIView *)view withRadius:(float)radius andColour:(UIColor *)colour
{
view.backgroundColor = [UIColor whiteColor];
CAShapeLayer *layer = [[CAShapeLayer alloc] init];
CGMutablePathRef pathRef = CGPathCreateMutable();
CGRect bounds = CGRectInset(view.bounds, 0.0f, 0.0f);
CGPathAddRoundedRect(pathRef, nil, bounds, radius, radius);
layer.path = pathRef;
CFRelease(pathRef);
layer.fillColor = colour.CGColor;
[view.layer insertSublayer:layer atIndex:0];
}
问题是如果一个高大的单元格是圆形的,当它被重复使用时,较早的子层仍然存在,虽然新的(较小的)高度是正确的,但外观是该框的底部边缘不是圆形的。据推测,(较大的)预先存在的图层正在剪裁。
一个明显的想法是删除子层,但我不能这样做。我尝试创建一个新的单元格而不重复使用,但这似乎不可能。
答案 0 :(得分:1)
在单元格类中创建自定义图层属性,为其指定图层并在单元格-removeFromSuperLayer
中为其调用-prepareForReuse
。
答案 1 :(得分:0)
我回忆起某个地方,我之前已经按下了按钮...
self.buttonCancel.layer.cornerRadius = 10;
self.buttonCancel.clipsToBounds = YES;
它也在这里工作......
cell.textBlurb.layer.cornerRadius = 10;
cell.textBlurb.clipsToBounds = YES;