iPhone 5硬件上奇怪的colorWithPatternImage

ohh*_*hho 12 hardware iphone objective-c

在空白的UIViewController中,我通过以下方式更改屏幕颜色:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blackPattern.png"]];
Run Code Online (Sandbox Code Playgroud)

然后我从我的iPhone 5进行屏幕截图.图像看起来像:

在此输入图像描述

如果以100%查看图像,您将看到三个条形图(顶部,左侧和底部).但是,我的模式图像非常简单(blackPattern@2x.png):

在此输入图像描述

它是视网膜显示器的8x8 png.

具有讽刺意味的是,当应用程序在模拟器上运行时,条形图不可见.它是iPhone 5硬件特定的symtom吗?

ps如果你想看到它运行,你可以下载我的应用程序:在这里

Mus*_*sis 0

我不知道这是否是您的确切问题,但是这一行:

self.view.backgroundColor = [UIColor colorWithPatternImage:
    [UIImage imageNamed:@"blackPattern.png"]];
Run Code Online (Sandbox Code Playgroud)

...意味着您正在使用名为“blackPattern.png”的文件,无论设备是否为视网膜设备。该行应该是:

self.view.backgroundColor = [UIColor colorWithPatternImage:
    [UIImage imageNamed:@"blackPattern"]];
Run Code Online (Sandbox Code Playgroud)

.png...(最后没有)。这样,如果设备是视网膜设备,您的程序将使用“blackPattern.png”;如果设备是视网膜设备,则程序将使用“blackPattern@2x.png”。

也许,您运行此代码的模拟器是非视网膜的,所以它看起来不错;只有视网膜设备才会出现问题。

  • 这不太准确;即使您有 .PNG 结尾,iOS 也会加载 @2x。此外,“在 iOS 4 及更高版本上,如果文件为 PNG 格式,则无需指定 .PNG 文件扩展名。在 iOS 4 之前,您必须指定文件扩展名。” 无论您是否指定 .PNG 结尾都没有什么区别。 (4认同)