如何控制UIViews背景图案颜色的大小?

时间:2013-06-02 11:08:43

标签: objective-c uiimage uicolor

我使用以下方法在我的UIView上设置了图案背景:

myView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundImage.png"]];

但是图像似乎被拉伸或放大,并且没有以所需的分辨率显示。有没有办法设置背景图案的大小或比例?或者图像大小是否用作默认值。图像DPI是否有影响?

2 个答案:

答案 0 :(得分:1)

通过平铺图像直到它填满给定区域来构造图案。 因此除了原始图像尺寸之外,无法控制图块尺寸。

现在,如果您想提供视网膜图像,您应该只有@2x版本,iOS会自动处理(btw将方法调用更改为[UIImage imageNamed:@"backgroundImage"] - 文件扩展名是可选的png图片)。

不要为视网膜提供更高的dpi图像,而是提供两倍于非视网膜图像的图像(显然不是通过对图像进行过采样)。

最后,您在模式上看到的唯一控件(至少是唯一记录的控件)是阶段。以下是official documentation

的相关部分
  

默认情况下,返回颜色的相位为0,这会导致图像的左上角与绘图原点对齐。要更改相位,请将颜色设置为当前颜色,然后使用CGContextSetPatternPhase函数更改相位。

答案 1 :(得分:0)

原来我没有使用@ 2x命名约定,因此图像显示为拉伸。我添加了它并修复了所有内容。