几种可能的可能性:
首先,您可能需要仔细检查以确保您有
cell.imageView.clipsToBounds = YES;
如果你不这样做,当它调整图像大小以适合 时UIImageView
,图像可能会溢出图像视图的边界。我注意到这个问题,特别是当我在后台队列中加载这个图像时。
其次,如果您在后台设置imageView
属性UITableViewCell
(如下面的简化示例代码),您应该知道在开始背景图像加载过程之前使用空白图像正确初始化图像很重要。因此,从基于 Web 的源加载单元格时非常常见的代码示例如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.textLabel.text = ... // you configure your cell however you want
// make sure you do this next line to configure the image view
cell.imageView.image = [UIImage imageNamed:@"blankthumbnail.png"];
// now let's go to the web to get the image
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
UIImage *image = ... // do the time consuming process to download the image
// if we successfully got an image, remember, ALWAYS update the UI in the main queue
dispatch_async(dispatch_get_main_queue(), ^{
// let's make sure the cell is still visible (i.e. hasn't scrolled off the screen)
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell)
{
cell.imageView.image = image;
cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
cell.imageView.clipsToBounds = YES;
}
});
});
return cell;
}
显然,如果您执行类似的操作,您需要确保[UIImage imageNamed:@"blankthumbnail.png"];
没有返回nil
(即确保您的应用程序成功地在包中找到它)。常见问题可能包括根本没有空白图像、名称错误、未能将图像包含在目标设置中、“构建阶段”选项卡下、“复制捆绑资源”下。
第三,您需要确保在使用子类UITableViewCell
条目时,不要使用 , 等的标准属性UITableViewCell
名称。确保使用您自己的唯一名称。如果你使用,系统会混淆你的新属性和默认属性。imageView
textLabel
imageView
IBOutlet
imageView
UITableViewCell