UIImageView无法在自定义单元格iOS 8中正确调整大小

Amm*_*ous 5 uitableview ios ios8

在此输入图像描述

我正在尝试实现与9gag应用程序类似的功能,其中单元格会根据图像的大小自动调整大小.宽度紧贴两侧,但高度根据需要调整大小.

我有一个标签,它包含上面的标题以及UIImageView,在图像下面我有共享图标等.我已经将图像的约束设置为UIImageView和较低的共享图标以及两者前导和尾随空格.看起来我已经尝试了切换视图的"模式"(即方面填充,宽高比适合)的每个组合,当我做方面适合它正确地调整图像大小但是在下部和上部添加了一堆填充.图片(下面的截图)在此输入图像描述

标签和图标都有适当的约束集(据我所知)

我已经搜索了几个小时试图寻找有类似问题的人,但无济于事我似乎找不到任何关于使用可能大小不同的图像的自我调整大小的内容.

任何人都可以指出我正确的方向或知道我的问题的解决方案?一如既往地非常感谢所有的帮助!

小智 1

据我所知,您实际上无法从 Interface Builder 中调整图像大小。您必须在 ViewController.m 文件中手动编写代码。有这样的东西:

- (void) adjustImageSize{
    CGSize imageSize = self.imageView.image.size;
    CGSize imageViewSize = self.imageView.frame.size;
    float imageAspectRatio = imageSize.width/imageSize.height;
    CGRect frame = self.statusImage.frame;
    frame.size.height =imageViewSize.width/imageAspectRatio;
    self.imageView.frame = frame;
    // set your Cell's frame here, based on your other constraints (labels/buttons etc), after you have resized your image
}
Run Code Online (Sandbox Code Playgroud)

您可以从 tableView 数据源函数中调用它。然后添加这个委托函数来告诉tableView每个单元格的动态高度。

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
    return cell.frame.size.height;
}
Run Code Online (Sandbox Code Playgroud)

这就是我为基于 NewsFeed 的应用程序动态调整图像大小的方法。希望这可以帮助。