【问题标题】:Cannot programmatically show image in UIImageView (iPhone)无法以编程方式在 UIImageView (iPhone) 中显示图像
【发布时间】:2012-04-10 13:46:22
【问题描述】:

我正在开发一个 iPhone 应用程序,但遇到了障碍。

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:@"happy.1" ofType:@"jpg"];
UIImage *new_image = [UIImage imageWithContentsOfFile:fileLocation]; 
[self setImage:new_image];

if (new_image == nil) {
    NSLog(@"can't load image happy.1.jpg");
}
bgImageView.image = image;

这是我用来显示图像的代码,但它没有出现! new_image 不是零,我知道如果它无法加载图像会是这样。 bgImageView 是一个 IBOutlet 并在 IB 中连接。

请告诉我我做错了什么。谢谢!

编辑:另外,这在模拟器和设备上都不起作用

【问题讨论】:

    标签: iphone uiimageview


    【解决方案1】:

    image 为零吗?

    [UIImage imageNamed:@"happy.1.jpg"] 有什么问题?

    【讨论】:

    • 稍后我将不得不加载许多图像,所以我认为从长远来看,使用 imageWithContentsofFile 会节省我的内存。图像也不为零。
    【解决方案2】:

    所以,这通常是因为图像没有被复制到构建的可执行文件中。所以,打开应用包,看看有没有。

    如果那么可能检查 fileLocation 不会返回为空/nil。

    我想知道“.1”是否引起了问题。尝试将图像文件重命名为 _1、_2,看看是否可以解决问题。

    【讨论】:

    • 我打印了文件位置,它是“/var/mobile/Applications/455212CA-C53C-449F-9125-5C4B0627070F/Mootchi.app/happy_1.jpg”,所以看起来没问题。我也重命名为happy_1,但还是什么都没有。
    • 您需要使用调试器并单步执行此代码。检查 bgImageView 是否不为零,查看它的尺寸,确保它实际上是可见的。视图实际上是否在可见窗口中?当您完成其他所有事情后,追踪此类事情的一般规则是:简化它。一个窗口,一个视图,一个图像。让它发挥作用,然后让它变得更复杂。
    【解决方案3】:
    NSString *fileLocation = [[NSBundle mainBundle] pathForResource:@"happy.1" ofType:@"jpg"];
    UIImage *new_image = [UIImage imageWithContentsOfFile:fileLocation]; 
    bgImageView.image = new_image;
    

    【讨论】:

      【解决方案4】:

      你可以使用 imageview.image=[UIImage imageNamed:@"imagename"];

      并且通过使用相同的方法,我们可以在每个图像视图上显示大量图像。它不会导致内存问题。只需要注意分配的图像视图的适当释放。

      【讨论】:

        猜你喜欢
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        相关资源
        最近更新 更多