3

几乎我想正确地将我的应用程序中按钮的大小转换为其宽度和高度的像素数量。

因此,假设它的宽度为 50,高度为 100,在视网膜显示设备上,我希望它返回 100 的宽度和 200 的高度。在非视网膜设备上,它应该返回 50 的宽度和身高100。

它应该在 iPad 上以同样的方式工作。无论如何,我该怎么做?我会使用 UIScreen 的 mainScreen 比例,还是有其他方法?

谢谢!

4

2 回答 2

5

您放在屏幕上的所有内容都以点而不是像素为单位。非视网膜 iPhone 为 320x480 点。Retina-iPhone (3.5") 是 320x480 点。

在所有设备上都是如此。不愁像素,愁点。

  • 320x480(3.5 英寸 iPhone/iPod touch)
  • 320x568(4" iPhone/iPod touch)
  • 768x1024(iPad - 全部)

您的按钮将在所有设备上测量为 100x50。

更新:

处理图像时,您需要创建两组图像。

  • image.png 将是 100x50 的“正常”大小
  • image@2x.png 将是 200x100 的“视网膜”尺寸

通过提供这两个图像,操作系统可以获取正确的图像。您的代码仍然以点为单位衡量所有内容。因此 200x100 的视网膜图像将在视网膜设备上显示为 100x50 点。

于 2012-12-09T05:34:22.053 回答
0

尽管我同意前面的回答,因为您通常应该发布两组资产而不是在运行时调整一组资产,但您仍然可以这样做。

将 UIImage 缩放到正确的屏幕比例确实意味着使用 UIScreen 的 scale 属性。但是,在将来的兴趣中,不使用 可能更有意义[UIScreen mainScreen],而是确定图像将在其中显示的视图并从那里获取屏幕。

总而言之,不搞乱创建单独的图像并让操作系统处理自己的缩放可能更有意义。如果您知道资产是 @2x,您可以使用它+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale来创建对象并在其中定义比例,这样系统将知道比例并正确处理调整大小,即使显示在 @1x 屏幕上也是如此。

于 2012-12-09T08:33:26.063 回答