管理视网膜UIButton图像大小

时间:2012-08-31 21:00:43

标签: objective-c ios cocoa-touch

我对使用视网膜和非视网膜显示管理不同大小的图像感到困惑。

  1. 我在Storyboard中添加了一个自定义按钮并添加了一些文本,然后添加了backgroundimage,这是一个在Illustrator中完成的向量(宽度:630 /高度:130):

    UIImage *img = [UIImage imageNamed:@"iPad1_orange_button.png"];
    [myButton setBackgroundImage:img forState:UIControlStateNormal];
    
  2. 按钮显示:

    enter image description here

    ...按钮出来很小。

    我有另一张带有@ 2x视网膜的图像,但尺寸相同。

    我的问题是如何根据图像尺寸管理按钮的大小。我需要手动设置按钮的大小吗?

    另外,当我在Illustrator中创建一个按钮,其像素大小与我在XCODE中使用的按钮相同并将其导出为.png时,将其添加到XCODE并将其拖到Storyboard中它会非常大。

3 个答案:

答案 0 :(得分:1)

快速澄清一下:

故事板尺寸为(以像素为单位)。

iPhone 4S的640x960(x,y)@ 326ppi。 xCode尺寸为320by460(x,y)。只需取数字并转换em即可获得合适的像素大小。

IE:如果你想要一个100宽和100高的故事板按钮,你要创建一个100 *(640/320)px宽和100 *(960/460)px高的图像(我相信我的数学是对的......)。

根据您正在构建的内容,您需要使用不同的图像来满足不同的设备。

另一方面,术语视网膜显示并未指定px的明确标准px。如果我没记错的话,苹果公司创造的术语基本上意味着屏幕有足够的px,人眼(因此视网膜)将无法看到锯齿状。

类似于英特尔对Ultrabook一词的创造;没有 REAL 规范/上限只是一种营销策略。

答案 1 :(得分:0)

考虑尺寸以及您将像素视为“密度无关像素”的内容。在位置和尺寸方面,您始终以原始尺寸工作,但操作系统可以为您处理不同的分辨率。现在我们有原始尺寸和Retina,它的密度是X2,但这可能会改变。您永远不需要手动更改给定设备的分辨率。

答案 2 :(得分:0)

这很简单:

  • 使按钮框架成为普通res图像的大小
  • 使用UIImage imageNamed加载图像时:按照这样做

UIImage * img = [UIImage imageNamed:@“iPad1_orange_button”];

*注意我删除了文件扩展名(.png) - 这指示UIImage选择适当的分辨率版本,常规版本或@ 2x。 iOS将以与普通res图像相同的帧大小显示图像的2x版本。很简单。