UIView框架大于iPhone';s屏幕

UIView框架大于iPhone';s屏幕,iphone,objective-c,uiview,bounds,Iphone,Objective C,Uiview,Bounds,我在XCode中创建了一个新的基于iPhone视图的项目,并查看了生成的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}对于视网膜显示器。然而,我得到了上面这些奇怪的值。有人能告诉我这里发生了什么吗?它破坏了我在其他项目

我在XCode中创建了一个新的基于iPhone视图的项目,并查看了生成的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}
对于视网膜显示器。然而,我得到了上面这些奇怪的值。有人能告诉我这里发生了什么吗?它破坏了我在其他项目中的一些绘图代码(要绘制的区域基于视图的框架)。

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


我不太明白你的问题,但是帧值可以通过边界属性和中心属性修改。。。因此,请检查您是否正在修改它们。

视网膜显示实际上不会增加视图的点大小。
当苹果推出它时,它在像素之间产生了差异。视网膜显示有更多像素,但点数相同。
您的代码中与UIKit相关的所有内容通常都是点,因此不需要进行任何更改,100x100的视图仍然是这样的大小


我不太明白你的问题,但是帧值可以通过边界属性和中心属性修改。。。因此,请检查您是否正在修改它们。

帧矩形如下所示:

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
屏幕宽度为320px宽,480px高。状态栏是20px。因此,您需要的rect是:

CGRectMake(0,0,320,460)

无论视网膜与否,设备都将根据需要向上转换。

帧矩形如下:

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
屏幕宽度为320px宽,480px高。状态栏是20px。因此,您需要的rect是:

CGRectMake(0,0,320,460)

无论视网膜与否,设备都将根据需要向上转换。

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

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

UIKit将像素(绝对分辨率)抽象为点。对于视网膜显示,整个尺寸(按UIKit)仍然是320x480,但可以有半个点(例如,(10.5,30.5))。UIKit将像素(绝对分辨率)抽象为点。对于视网膜显示器,整个尺寸(由UIKit提供)仍然是320x480,但您可以有半个点(例如,(10.5,30.5))。没关系,我想到的是另一台具有320 x 240分辨率(oops)的设备:)没关系,我想到的是另一台具有320 x 240分辨率(oops)的设备:)没关系,我想到的是另一台具有320 x 240分辨率(oops)的设备(没关系,我想到的是另一台具有320 x 240分辨率(oops)的设备)