我正试图在cellforrowatindexpath中绕过图像的角落,如下所示:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSString *identifiers = _identifiers[indexPath.row];
if([identifier isEqualToString:@"bronze"]){
cell.imageView.image = [UIImage imageNamed:@"bronze.png"];
cell.imageView.layer.cornerRadius = cell.imageView.frame.size.width / 2;
cell.imageView.clipsToBounds = YES;
}
return cell;
}
然而,这不起作用。我做错了什么?
答案 0 :(得分:1)
在设置图片后立即尝试呼叫:
[cell layoutSubviews];
我不认为这是最好的方法,但这是一个可行的黑客。 这已经过测试。
编辑(为清晰起见):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSString *identifiers = _identifiers[indexPath.row];
if([identifier isEqualToString:@"bronze"]){
cell.imageView.image = [UIImage imageNamed:@"bronze.png"];
[cell layoutSubviews];
cell.imageView.layer.cornerRadius = CGRectGetWidth(cell.imageView.frame) / 2;
cell.imageView.clipsToBounds = YES;
} else {
cell.imageView.image = nil;
cell.imageView.layer.cornerRadius = 0;
}
return cell;
}
答案 1 :(得分:0)
此时imageView的帧为(0,0,0,0)。所以cell.imageView.frame.size.width
为0.因此,您的代码将cornerRadius再次设置为0,这是一个无操作。
您可以对cornerRadius的值进行硬编码,或者您可以对表格视图单元格进行子类化并覆盖-layoutSubviews