在TableView中加载远程图像,同时保持大小不变

时间:2015-06-26 15:05:08

标签: ios objective-c uitableview

我想显示一个表格视图,其中每个单元格只包含一个图像。图像从各自的URL加载,对图像的大小没有限制。

我希望以适当的尺寸显示每个单元格中的图像 - 即保持纵横比。我猜这将需要每个细胞的动态高度。但我不确定,也找不到解释如何实现这一目标的资源。

最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

希望您正在异步加载图像,如下所示:Loading images for UITableViewCell from URL (need to load them asynchronously)

您需要将UIImageView设置为UIViewContentModeScaleAspectFit的自定义单元格或原型单元格。在单元格中,按照您希望的方式设置约束:也就是说,如果您希望图像是屏幕的整个宽度,请设置前导和尾随约束,并约束到顶部和底部。

然后,将表视图设置为使用动态大小调整:

tableView.estimatedRowHeight = 80.0; //or some reasonable first approximation
tableView.rowHeight = UITableViewAutomaticDimension;

答案 1 :(得分:0)

您需要首先动态获取图像的高度和宽度,并为表格视图单元格设置相同的高度和宽度。

我没有添加表视图,但只是一些代码可以帮助您了解如何以原始高度和宽度显示两个不同的图像并将其添加到视图中。

 NSURL *imageURL1 = [NSURL URLWithString:@"http://cdn.macrumors.com/article-new/2014/12/applelogo.png"];
    NSData *imageData1 = [NSData dataWithContentsOfURL:imageURL1];
    UIImage *image1 = [UIImage imageWithData:imageData1];

    UIImageView *imageView1 = [[UIImageView alloc] initWithImage: image1];
    //CGFloat height = imageView.frame.size.height;
    //CGFloat width = imageView.frame.size.width;
    [self.view addSubview:imageView1];

    //sample urls :- http://pre01.deviantart.net/e711/th/pre/f/2013/179/2/c/ios_7_icons__updated__by_iynque-d69mme1.png

    NSURL *imageURL2 = [NSURL URLWithString:@"http://icons.iconarchive.com/icons/position-relative/social-2/128/ios-icon.png"];
    NSData *imageData2 = [NSData dataWithContentsOfURL:imageURL2];
    UIImage *image2 = [UIImage imageWithData:imageData2];

    UIImageView *imageView2 = [[UIImageView alloc] initWithImage: image2];
    CGFloat height = imageView2.frame.size.height;
    CGFloat width = imageView2.frame.size.width;
    imageView2.frame = CGRectMake(0, 300, width, height);
    NSLog(@"height :- %f, Width :- %f ",height, width);

    [self.view addSubview:imageView2];