对于视网膜显示,iOS背景和图像似乎无法正确缩放

时间:2013-05-24 03:28:59

标签: iphone ios background textures

使用以下代码时:

self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"texture1.png"]];

我的视图的纹理背景设置得很好。但我可以看到,对于视网膜显示器,图像没有正确缩放,它们看起来更像素化,而不是像它们应该的那样丰富的纹理和颜色。我也遇到过这个问题与其他图像有关,当试图制作iphone 5屏幕尺寸逐渐消失的图像时,只会看到它的一部分,其余部分会被切断,即使分辨率很好。知道我在这里缺少什么吗?

编辑:是否与我正在使用的图像的默认dpi有关?

编辑#2:这是一个截图: enter image description here

另外,有人知道除了http://subtlepatterns.com/之外是否有良好的背景纹理来源吗?

编辑#3:这是我尝试使用ios-linen图案的一个很好的例子 enter image description here

2 个答案:

答案 0 :(得分:3)

如果使用@ 2x图像

,首先从图像名称中删除.png
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"texture1"]];

请检查图像的高度和宽度以保留显示..

By Apple On devices with high-resolution screens, the imageNamed:, imageWithContentsOfFile:, and initWithContentsOfFile: methods automatically looks for a version of the requested image with the @2x modifier in its name. If it finds one, it loads that image instead. If you do not provide a high-resolution version of a given image, the image object still loads a standard-resolution image (if one exists) and scales it during drawing.

答案 1 :(得分:0)

您应该向initWithPatternImage添加UIImageView,而不是使用UIView。这更好,因为: -

  1. UIImageView将根据其特定的宽度和高度包含图片。

  2. 此外,initWithPatternImage方法比UIImageView消耗更多内存

  3. 更喜欢使用UIImageView而不是

    initWithPatternImage:[UIImage imageNamed:@"texture1.png"]
    

    如果图片仍然不清晰,您可以将 @ 2x图片添加到UIImageView,您会看到清晰度更高。