单击一个单元格,图像大小发生变化

Posted

技术标签:

【中文标题】单击一个单元格,图像大小发生变化【英文标题】:Click on a cell, the image size changed 【发布时间】:2013-12-06 08:12:49 【问题描述】:

我正在将图像视图大小设置为固定。我在storybard中设置了约束,约束是正确的。但是在我从网络服务加载一些图像后,当我单击单元格时,一些图像改变了它的大小,而有些则没有。我已将图像视图 contentMode 设置为宽高比合适。如何使图像自动调整大小以适合图像视图,并且我不必单击单元格来使其大小调整以适合?

cellForRow:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"Cell";
    LocalCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if (!cell) 
        cell = [[LocalCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    
    NSString *photoReference = [self.restaurants[indexPath.row][@"photos"] objectAtIndex:0][@"photo_reference"];
    NSString *photo = [NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/photo?maxwidth=80&photoreference=%@&sensor=true&key=%@", photoReference, AppKey];

    cell.name.text = self.restaurants[indexPath.row][@"name"];
    cell.desc.text = self.restaurants[indexPath.row][@"vicinity"];
    [cell.imageView setImageWithURL:[NSURL URLWithString:photo] placeholderImage:[UIImage imageNamed:@"placeholder"]];

    return cell;

【问题讨论】:

嗨。请也显示您的didSelectRowAtIndexPath: 方法。 您能否提供一张显示在您的 UIImageView 之外的图像的屏幕截图? 尝试将 clipsToBounds 设置为 YES; 【参考方案1】:

将您的 UIImageView clipsToBounds 属性设置为 YES,如下所示

[yourImageView clipsToBounds:YES];

【讨论】:

【参考方案2】:

我刚刚想通了:

- (void)layoutSubviews

    [super layoutSubviews];
    self.imageView.frame = CGRectMake(15, 15, 80, 50);
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;

【讨论】:

以上是关于单击一个单元格,图像大小发生变化的主要内容,如果未能解决你的问题,请参考以下文章

重新加载单元格高度变化的单元格时,UITableView 滚动到顶部

当集合视图大小发生变化时,我需要帮助为 UICollectionView 单元格大小设置动画

触摸时 UITableViewCell 图像发生变化

当边界 UICollectionView 更改时调整单元格大小

为啥集合视图中的动态集合单元格不显示为给定大小并且在 swift 3 中滚动后会发生变化

单击另一个单元格时将 UITableViewCell 折叠到原始大小