gpt4 book ai didi

ios - UITableViewCell drawRect 影响其他单元格

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:31 24 4
gpt4 key购买 nike

我有一个包含自定义单元格的 UITableView

我想使用 drawRect 方法自己渲染单元格(我使用 mask 来渲染带有圆角的图像)。

无论如何,tableView 中的drawRect 方法只绘制一个单元格。其余的都在那里,它们只是看不见的。我可以点击它们,但我看不到它们。

如果我删除 drawRect 方法,则所有单元格都可见并显示标签。

drawRect 方法是...

- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();

CGRect mask = CGRectMake(10, 10, rect.size.width - 20, rect.size.height - 20);

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:mask cornerRadius:4];

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.frame;

maskLayer.path = maskPath.CGPath;

self.layer.mask = maskLayer;

if (self.image == nil) {
CGContextSetFillColorWithColor(context, [UIColor colorWithWhite:0.6 alpha:1.0].CGColor);
CGContextFillRect(context, rect);
} else {
float width = rect.size.width - 20;
float height = self.image.size.height / self.image.size.width * width;

CGRect imageRect = CGRectMake((rect.size.width - width) * 0.5, (rect.size.height - height) * 0.5, width, height);
[self.image drawInRect:imageRect];
}
}

我是不是做错了什么?

此外,如果我移除蒙版,那么它会绘制所有单元格,但我希望蒙版在其中用于圆角。

编辑 - 删除图像绘图

我编辑了 drawRect 方法(在 UITableViewCell 中)(为什么我要把它放在 tableView 中?)

无论如何,新的drawRect 方法是...

- (void)drawRect:(CGRect)rect
{
if (self.image == nil) {
CGContextRef context = UIGraphicsGetCurrentContext();

CGRect mask = CGRectMake(10, 10, rect.size.width - 20, rect.size.height - 20);

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:mask cornerRadius:4];

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.frame;

maskLayer.path = maskPath.CGPath;

self.layer.mask = maskLayer;

CGContextSetFillColorWithColor(context, [UIColor colorWithWhite:0.7 alpha:1.0].CGColor);
CGContextFillRect(context, rect);
}
}

如果图像为 nil,则它会在其位置呈现一个灰色矩形。除了它只显示第一个单元格。掩码似乎阻止了其他单元格的显示。

最佳答案

您正在将 mask 层框架设置为单元格的框架,该框架位于单元格的 super View - UITableView 的坐标空间中,因此对于所有单元格,但第一个实际 mask 框架将在单元格的边界之外。尝试将蒙版框设置为单元格的边界:

maskLayer.frame = self.bounds;

关于ios - UITableViewCell drawRect 影响其他单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16188015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com