xcode ios:在标签上的单元格图像重叠

时间:2012-11-27 23:05:29

标签: objective-c ios xcode

我正在表格中的单元格上显示图像。我有

中的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

当我使用故事板时,我用

在单元格中显示图像
cell.imageView.image = [UIImage imageNamed:_lotImagesArray[row]];

但是,当我尝试从网络服务器加载图片时,图片位于单元格中的标签顶部(阻止标签文字)

我用来显示网络服务器图像的代码是:

NSString *strURL = [NSString stringWithFormat:@"http://www.domainhere.com/images/%@", lotPhoto[row]];
NSURL *url = [[NSURL alloc] initWithString:strURL ];
cell.imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];

有人可以建议我哪里出错吗?

1 个答案:

答案 0 :(得分:1)

有几种可能的可能性:

首先,您可能需要仔细检查以确保您拥有

cell.imageView.clipsToBounds = YES;

如果不这样做,当图像的大小适合UIImageView时,图像会在图像视图的边界上出血。我注意到这个问题,特别是当我在后台队列中加载这个图像时。

第二次,如果您在后台设置imageView的{​​{1}}属性(如下面的简化示例代码),您应该知道这一点非常重要在启动背景图像加载过程之前,使用空白图像正确初始化图像。因此,从基于Web的源加载单元格时,非常常见的代码示例如下:

UITableViewCell

显然,如果您执行此类操作,则需要确保- (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条目时,不要使用{{1}的标准UITableViewCell属性名称},UITableViewCell等。请务必使用您自己的唯一名称。如果您使用imageView,系统会在您的新textLabelimageView的默认IBOutlet属性之间混淆。