【问题标题】:loading image dyanmically into tableviewcell将图像动态加载到表格视图单元格中
【发布时间】:2011-05-12 06:35:45
【问题描述】:

除了使用 if 语句之外,还有更好的方法将图像动态加载到不同行的 tableviewcell 中吗?如果我有很多细胞怎么办。这是否意味着我必须写很多 if 语句?还有一种方法可以从核心数据中检索图像并将其用作表格视图单元格的图像吗?提前致谢。

- (UIImage *)imageForMagnitude:(CGFloat)magnitude { 
if (magnitude >= 5.0) {
    return [UIImage imageNamed:@"5.0.png"];
}
if (magnitude >= 4.0) {
    return [UIImage imageNamed:@"4.0.png"];
}
if (magnitude >= 3.0) {
    return [UIImage imageNamed:@"3.0.png"];
}
if (magnitude >= 2.0) {
    return [UIImage imageNamed:@"2.0.png"];
}
return nil;

}

编辑:如果不是数量级怎么办?例如产品列表或 iphone 上的应用商店。他们是如何设法为桌子上的不同应用程序生成不同的图像的?他们是在使用桌子还是有更好的方法来做到这一点?

【问题讨论】:

  • 每个 UITableViewCell 都有自己的大小吗?如果否则否,您不需要为每个单元格设置不同的 if 语句。另外,该函数在哪里被调用?为什么要使用核心数据将图像存储为 BLOB?我认为 UIImage 正在进行缓存,因此您可能希望利用它

标签: objective-c ios uitableview didselectrowatindexpath


【解决方案1】:

嗯,也许是一个 switch 语句。或者您可以将幅度四舍五入,然后..

[NSString stringWithFormat:@"%d.0.png", newMagnitude];

【讨论】:

    【解决方案2】:

    使用来自<math.h>floorf 函数将幅度四舍五入

    然后使用MINMAX 宏来保护实际值不会超过 5 或低于 2。

    int realMagnitude = (int) MAX(MIN(floorf(magnitude), 5.0f), 2.0f);
    return [UIImage imageNamed:[NSString stringWithFormat:@"%d.0.png", realMagnitude]];
    

    更新:我认为这就是您要查找的内容:在-tableView:cellForRowAtIndexPath: 中,使用提供的NSIndexPath 获取相关图像:

    cell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg", indexPath.row]];
    

    【讨论】:

    • 如果不是量级怎么办?喜欢带有不同图片的产品列表?
    • @洪毅:我不明白。
    • 幅度代码是如何在 UITableViewCell 上拥有不同图像的示例。有没有更简单的方法来动态地做到这一点?像 UIImage imageNamed: "%@.jpg", indexPath.row 之类的代码?由于争论太多,我提到的内容不起作用。所以我在想也许有更好的方法。感谢您在这里帮助我。
    • @洪毅:哪里争论太多了?我不明白。
    • cell.imageView.image = [UIImage imageNamed:@"%@.jpg", indexPath.row]。我不断收到太多参数,预计 1 有 2。我试图做的是按升序命名图片,以便显示所有图片。
    猜你喜欢
    • 2018-07-02
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2019-04-18
    • 2021-01-31
    相关资源
    最近更新 更多