Я прочитал о бите точка / пиксель в документации Apple, но мне все еще не совсем ясно.То, что я пытаюсь сделать, это поместить панель инструментов прямо над клавиатурой, которая появляется при прикосновении к текстовому просмотру.Он работал до IOS4, поместив панель инструментов в положение 0,480
, а затем позволил ей подняться, вычтя keypad.size.y
из ее координаты Y.В IOS4 это все еще работает нормально, пока я использую симулятор 3gs, но как только я переключаюсь на гигантский симулятор iphone4, на панели инструментов не появляется клавиатура, потому что она просто перемещается куда-то за экран.
Я понимаю, что теперь при вычислении координат экрана используется масштабный коэффициент, и имеет смысл заменить начальную позицию тобара (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
для экрана HD, который составляет 640 x 960, использование этих координат для установки моей панели инструментов за пределами экрана (0,960) приведет кфакт, поместите это далеко за кадром и сделайте так, чтобы это больше не подходило.Кажется, что размер экрана HD не соответствует координатам рисования, которые я должен использовать, чтобы разместить что-то в точном положении на том же экране.Симулятор идет на меня странно?Или я что-то упустил?