【问题标题】:Loading retina images to tabbar dynamically将视网膜图像动态加载到标签栏
【发布时间】:2011-12-06 14:24:42
【问题描述】:

我在标签栏中使用的图像是动态的,我从互联网上加载它们。我检测我是否在视网膜显示器上并下载正确的图像并使用它们初始化标签栏。

普通图像工作正常。我的问题是视网膜图像。它们以大尺寸显示,比标签栏大,因此没有完全显示。

我想知道如何将视网膜图像加载到标签栏并使其看起来正常。

更新:

这是我用来从添加的每个视图控制器将图像加载到标签栏的代码:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString* path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString:@"1.png"]];
    UIImage* image = [UIImage imageWithContentsOfFile:path];

图像是否具有@2x 并不重要,因为我手动选择正常或视网膜图像。

【问题讨论】:

  • 您目前如何加载图像并将其分配给标签栏?
  • 检查图像的 DPI 是否正常
  • 您的视网膜图像是否与普通图像命名相同但末尾带有@2x 后缀?
  • 请查看更新后的问题。

标签: iphone ios uitabbar


【解决方案1】:

我自己没有遇到过这个问题,但我会在您创建图像后立即设置断点。使用调试器检查新图像的scale 属性。我想您会发现 scale 设置为 1.0,但您的高分辨率图像应该将 scale 设置为 2.0。有三种方法(据我所知)可以做到这一点:

  • 使用“@2x”后缀命名文件;
  • 适当地为您的图像设置“dpi”属性;
  • 使用-initWithCGImage:scale:orientation:+imageWithCGImage:scale:orientation: 创建图像

【讨论】:

  • 我使用了 +imageWithCGImage,它运行良好。非常感谢。
猜你喜欢
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
相关资源
最近更新 更多