【问题标题】:Why won't this image show up? Using NSData and initWithData为什么这个图不显示?使用 NSData 和 initWithData
【发布时间】:2011-07-13 18:51:10
【问题描述】:
NSURL* urlEx = [NSURL URLWithString:@"Pacific_Map.png"];
NSData* mapExIMGData = [[NSData alloc] initWithContentsOfURL: urlEx];

UIImage* imgEx = [[UIImage alloc] initWithData:mapExIMGData];

mapImageViewEx.image = imgEx;

如果我替换 mapImageViewEx.image = imgEx; with mapImageViewEx.image = [UIImage imageNamed:@"Pacific_Map.png"];它有效,但我不想使用 imageNamed。

【问题讨论】:

    标签: iphone ipad uiimage nsdata nsurl


    【解决方案1】:

    这是因为 imageNamed 知道在哪里扫描文件,但 initWithContentsOfURL 需要完整路径。使用

    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"Pacific_Map" ofType:@"png"];
    NSURL* urlEx = [NSURL fileURLWithPath:imagePath];
    NSData* mapExIMGData = [[NSData alloc] initWithContentsOfURL: urlEx];
    
    UIImage* imgEx = [[UIImage alloc] initWithData:mapExIMGData];
    
    mapImageViewEx.image = imgEx;
    

    【讨论】:

    • 谢谢,但你确定这是正确的吗?图像仍然没有出现。我快速浏览了一下,我找不到任何错误..
    • NSURL URLWithString 应该是 fileURLWithPath,我编辑了原来的答案 :)
    【解决方案2】:

    使用 imageNamed 有什么问题?无论如何,您可以使用 initWithContentsofPath。

    + (UIImage *)imageWithContentsOfFile:(NSString *)path
    

    告诉我们更多关于你想要完成的事情。祝你好运,

    詹姆斯

    编辑:对不起,我认为 Pacific_Map.png 只是一个占位符路径。像其他人发布的一样,如果您不打算使用 imageNamed,则需要指明完整路径。

    【讨论】:

    • 我不想缓存图片。
    • 查看此帖子。 stackoverflow.com/questions/316236/… 无论如何,imageWithContentsOfFile 不会缓存图像,因此这对您来说可能是可行的。尽管如此,根据您的操作,缓存图像实际上可以减少您的内存使用量......在帖子中解释得更好。
    猜你喜欢
    • 2013-07-12
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    相关资源
    最近更新 更多