5

今天是我使用 Xcode 的第一天,我已经成功创建了我的第一个单视图应用程序。

我以前没有 Objective-C 的背景,但我过去做过很多 HTML + CSS。所以,当我设计我的第一个视图时,我首先在 PSD 上创建,然后我将它逐块剪切为文本字段背景、按钮图像等。

但是我今天发现的很有趣...

我有一个 483 x 82 像素的 PNG 图像,但是当我将它用作文本字段背景时,我在 Size Inspector 窗口中看到它有 240 x 40。我不知道 Xcode 如何测量它,但我相信它不在像素。令人惊讶的是,它与我在 PSD 文件中看到的大小完全相同。

我的问题是,如何为像素中的任何 Xcode 组件具有相同的宽度和高度?

谢谢你...

PS:这是我的按钮及其大小的屏幕截图:

在此处输入图像描述

这是我在 Xcode 上的内容,在右侧检查器选项卡上看到,宽度和高度必须为 240 和 40,而不是 483 和 82 像素:

在此处输入图像描述

如果我将真实像素 (483x82) 放在该检查器选项卡上,则该按钮在 iPad 屏幕上将非常大。

4

1 回答 1

7

首先,关于iOS中非视网膜视网膜图像的一些一般背景:

  • iPhone 3GS 及更早机型、iPad 1、iPad 2 和 iPad mini(仅举几例)使用非视网膜图像。也就是说,您提供的图像将以像素为单位以相同的宽度和高度显示。

  • iPhone 4+ 和“新 iPad”(iPad 3)使用视网膜图像。也就是说,您提供的图像的宽度和高度应该是希望在屏幕上显示的两倍。

这就引出了iOS 应用中点的概念:

1 点=非视网膜设备上的1 个像素或视网膜设备上的2 个像素。

每当您在 Interface Builder (IB) 中设置大小时,您实际上是在设置大小,而不是像素。

此外,您应该始终为非视网膜视网膜版本提供两个图像。通过将其命名为与非视网膜版本相同然后附加@2x 来表示视网膜版本。

例如

my_awesome_image.png    // non-retina image
my_awesome_image@2x.png  // retina image

通过这样做,操作系统将自动为您在视网膜设备上选择正确的图像。

现在我们对这个概念很清楚(呃),这就是你在 IB 中实际做的事情:

您已将图像视图的宽度和高度设置为 240 pt x 40 pt,并且默认情况下,图像视图的contentMode属性设置为UIViewContentModeScaleToFill(因此,很高兴调整指定图像的大小以填充您告诉它的大小......因此图像将在视网膜设备上显示为 480 像素 x 80 像素 - 但请记住,由于所述 2 倍像素密度,这看起来“大小相同”,而在非视网膜设备上显示为 240 像素 x 40 像素)。

设置图像视图时,通常需要执行以下操作:

  1. 在您的项目中同时包含视网膜和非视网膜图像
  2. 将图像视图的点大小设置为您想要的任何值
  3. 将图像视图的 contentMode 设置为您想要的任何内容(您可能希望或可能不希望保留为默认值)
于 2013-09-08T05:46:32.790 回答