0

我在 XCode 中创建了一个基于 iPhone View 的新项目,并查看了生成的 xib,名称为myAppViewController.xib. 在那个xib中,生成的视图的框架看起来像这样:{ x = 160, y = 230, w = 320, h = 460 }这个视图应该填满整个屏幕,不包括状态栏。我希望视图的框架看起来像这样:{ x = 0, y = 0, w = 240, y = 300 }对于较旧的 iPhone 和{ x = 0, y = 0, w = 480, h = 600 }视网膜显示器。但是,我得到了上面那些奇怪的值。谁能向我解释一下这里发生了什么,它破坏了我在其他项目中的一些绘图代码(要绘制的区域基于视图的框架)。

4

3 回答 3

3

Retina 显示实际上并没有增加视图的点大小。当苹果推出它时,它在点像素
之间产生了差异。Retina 显示屏具有更多像素,但点数相同。 与 UIKit 相关的代码中的所有内容通常都以点为单位,因此不需要进行任何更改,100x100 的视图仍然是那个大小。

我真的不明白你的问题,但框架值可以通过bounds属性和center属性来修改......所以检查你是否没有修改这些。

于 2011-02-17T19:38:43.253 回答
2

框架矩形是这样的:

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)

屏幕宽度为 320px 宽 x 480px 高。状态栏为 20px。因此你想要的矩形是:

CGRectMake(0,0,320,460)

无论视网膜与否,设备都会根据需要进行转换。

于 2011-02-17T19:39:29.540 回答
0

坐标以点为单位,而不是像素。坐标系为 320 X 480,与屏幕分辨率无关。

于 2011-02-17T19:45:20.350 回答