2010-07-19 87 views
2

我读了苹果文档中的point/pixels位,但仍然不是完全清楚。 我试图完成的工作是将一个工具栏放在触摸textview时出现的键盘上方。 IOS4之前的工作方式是将工具栏放置在位置0,480处,然后通过从Y坐标中减去keypad.size.y来实现。在IOS4中,只要我使用3gs模拟器,它仍然可以正常工作,但只要切换到巨型iphone4模拟器,工具栏就不会出现键盘,因为它只会移动到屏幕外某处。Iphone的高清屏幕没有映射到绘图坐标

我明白现在是当它涉及到计算屏幕坐标和有意义使用类似

CGRect phoneRect = [Util getPhoneScreenSize]; 
CGSize phoneSize = phoneRect.size; 
CGRect toolbarFrame = CGRectMake(0, phoneSize.height, phoneSize.width, 44); 

其中getPhoneScreenSize更换商工具栏的起始位置(0480)参与比例因子:

+(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)将事实上p将它从屏幕上拉开,并使其不再出现。 似乎高清屏幕的大小没有映射到我需要使用的绘图坐标来放置在同一屏幕上的确切位置的东西。 模拟器对我来说很奇怪吗?或者我错过了什么?

+0

其时代喜欢这些我希望inputAccessoryView之前3.2 :(可选路了。 – 2010-07-19 19:26:04

回答

1

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

+0

没有意义,为什么要开发无法访问所有640×960像素的屏幕上? – Oysio 2010-07-19 19:59:41

+0

他们这样做。阅读文档。 – 2010-07-20 11:48:59

0

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

CGRect mainViewBounds = self.view.bounds; 

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

[_toolbar setFrame:toolbarFrame];