Retina上的字体和线条显示

时间:2012-04-21 07:03:17

标签: iphone objective-c ios retina-display

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

  • UILabels
  • 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)

我如何更改这样的代码以处理这两种分辨率?

2 个答案:

答案 0 :(得分:2)

您可以按

检查屏幕比例
CGFloat scale = ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] ? [UIScreen mainScreen].scale : 1.0);

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

答案 1 :(得分:1)

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

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

如果你想看看我的意思但没有视网膜显示设备,你可以在模拟器中运行,然后从菜单硬件>中选择。装置> iPhone(Retina)

祝你好运。