3

我已经在@1x 版本中完成了我的应用程序,并创建了很多带有代码的界面,这意味着:

  • 用户标签
  • UIViews

一切看起来都很棒。如果我现在在视网膜显示器上使用该应用程序,显然一切都可以扩展到@2x。我有一些用烟花/photoshop 设计的图形,当然,它们的@2x 版本也可以正常工作。我的问题是如上所述的标准界面元素。

问题:我该怎么办

  • 在 UILabel 中有一个字体在两种分辨率上都有 1px 的笔划,但在 @2x 上的高度和宽度加倍?
  • 在两种分辨率上都有一个高度为 1px(作为屏幕分隔符)的 UIView?@2x 上的 2px 线是可以的,但 id 真的宁愿让它们 1px 的高度 - 看起来更优雅。

用于创建我当前使用的分隔符视图:

UIView *separatorLine = [[UIView alloc]initWithFrame:CGRectMake(0,200,320,1)];
[self.view addSubview:seperatorLine];

在@1x 分辨率下工作正常,但在@2x 中被放大到 2px 高度,而不是在@2x 中显示为:

seperatorLine.frame == (0,400,640,1)

我需要如何更改这样的代码才能在两种分辨率下工作?

4

2 回答 2

2

您可以通过以下方式检查屏幕比例

CGFloat scale = ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] ? [UIScreen mainScreen].scale : 1.0);

如果比例等于 2.0,则您在视网膜显示器上,并且可以更改分隔符的框架,例如,更改为CGRectMake(0.0, 200.0, 320.0, 0.5).

于 2012-04-21T07:07:58.647 回答
1

使用 Apple 的 Cocoa 元素时,您无需担心任何这些,这对我们开发人员来说是视网膜显示的最佳部分!

您需要像您所说的那样将您的图形@2x,但设备会根据需要自动缩放 Cocoa 显示元素。苹果已经明确区分了“像素”和“点”,并且使用点来设置帧。一个点在传统显示器上是 1px,在 Retina 显示器上是 2px。这意味着事实上,如果你将你的框架设置CGRectMake(0,400,640,1)为你提到的将线放在屏幕底部并且是屏幕宽度的两倍(当然被屏幕的边界剪裁)。如果你真的希望这条线在视网膜显示器上的高度为 1 像素,请将其设为图像。标准图像可以是 320x1,@2x 可以是 640x1。

如果您想了解我的意思但没有 Retina 显示设备,您可以在模拟器中运行并从菜单中选择 Hardware > Device > iPhone (Retina)

祝你好运。

于 2012-04-21T09:31:09.377 回答