HD-экран Iphone не соответствует координатам рисования - PullRequest
2 голосов
/ 19 июля 2010

Я прочитал о бите точка / пиксель в документации 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 не соответствует координатам рисования, которые я должен использовать, чтобы разместить что-то в точном положении на том же экране.Симулятор идет на меня странно?Или я что-то упустил?

Ответы [ 2 ]

1 голос
/ 19 июля 2010

Притворитесь, что телефон все еще 320x480, и все будет работать.

0 голосов
/ 14 октября 2010

Возможно, вам не следует рассчитывать прямоугольник панели инструментов, исходя из размера основного экрана. Если вы находитесь внутри UIViewController, попробуйте получить текущий вид, а затем настройте панель инструментов соответствующим образом. Вот часть моего рабочего кода для установки панели инструментов внизу.

CGRect mainViewBounds = self.view.bounds;

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

[_toolbar setFrame:toolbarFrame];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...