Iphone的高清屏幕没有映射到绘图坐标

时间:2010-07-19 19:20:07

标签: iphone ios4

我在Apple文档中读到了point/pixels位,但对我来说还不是很清楚。 我试图完成的是在触摸文本视图时出现的键盘上方放置一个工具栏。它在IOS4之前的工作方式是将工具栏放在0,480位置,然后从它的Y坐标中减去keypad.size.y。在IOS4中,只要我使用3gs模拟器,这仍然可以工作,但是当我切换到巨型iphone4模拟器时,工具栏将不会出现键盘,因为它只会移动到屏幕外的某处。

据我所知,现在有一个比例因子涉及计算屏幕坐标,有意义的是用

之类的东西替换toobar的起始位置(0,480)
CGRect phoneRect = [Util getPhoneScreenSize];
CGSize phoneSize = phoneRect.size;
CGRect toolbarFrame = CGRectMake(0, phoneSize.height, phoneSize.width, 44);

其中getPhoneScreenSize:

+(CGRect) getPhoneScreenSize
{
 UIScreen *mainScreen = [UIScreen mainScreen];
 CGRect bounds = [mainScreen bounds];
 CGRect phoneRect = bounds;

 if([[UIScreen mainScreen] respondsToSelector:NSSelectorFromString(@"scale")])
 {
  CGFloat scale = [mainScreen scale];

  if ( scale > 0 ) {
   phoneRect.origin.x *= scale;
   phoneRect.origin.y *= scale;
   phoneRect.size.width *= scale;
   phoneRect.size.height *= scale;
  }

 }

 return phoneRect;
}

但令人困惑的部分仍然是,虽然我从getPhoneScreenSize获得了高清屏幕的正确分辨率,即640 x 960,使用这些坐标设置我的工具栏就在屏幕外(0,960)实际上把它放在屏幕外,让它不再出现。 似乎高清屏幕的大小没有映射到我需要用于在同一屏幕上的确切位置放置某些东西的绘图坐标。 模拟器对我来说很奇怪吗?或者我错过了什么?

2 个答案:

答案 0 :(得分:1)

假装手机仍然是320x480,一切都会正常工作。

答案 1 :(得分:0)

也许您不应该通过从主屏幕尺寸获取来计算工具栏矩形。如果您在UIViewController中,请尝试获取当前视图,然后相应地设置工具栏。这是我工作代码的一部分,用于将工具栏设置在底部。

CGRect mainViewBounds = self.view.bounds;

CGRect toolbarFrame = CGRectMake(CGRectGetMinX(mainViewBounds),
                             CGRectGetMinY(mainViewBounds) + CGRectGetHeight(mainViewBounds) - toolbarHeight,
                             CGRectGetWidth(mainViewBounds),
                             toolbarHeight);

[_toolbar setFrame:toolbarFrame];