вопрос ориентации на iPad и iPhone - PullRequest
0 голосов
/ 30 марта 2011

У меня есть проект, который я создал в XCode 4, который работает на iPad и iPhone.Когда дисплей поворачивается, мне было интересно, как лучше всего повернуть элементы управления.Некоторые из моих изображений и элементов управления должны быть изменены, а также для поддержки различной ориентации.

В идеале я хотел бы иметь отдельный файл пера, но я не уверен, как переключать вид.Я знаю, что могу получить ориентацию через UIInterfaceOrientation и тому подобное, но, поскольку я новичок в iDevelopment, я не уверен, что это лучший способ сделать это.

Любые советы и / или примеры будут полезны !!

Спасибо, Тони

1 Ответ

2 голосов
/ 30 марта 2011

Вещи, которые вы, вероятно, уже знаете: делайте как можно больше, используя маски автоматического изменения размера. В идеальном мире вы бы все сделали с ними. Есть много случаев, когда вы можете, хотя нетрудно придумать примеры контроллеров, где вы хотите больше контроля, и у вас, очевидно, есть. В терминах кода очевидная вещь - реализовать shouldAutorotateToInterfaceOrientation и убедиться, что вы возвращаете 'YES' для поддерживаемых ориентаций.

Кроме того, главное, что вы хотите реализовать - это - willAnimateRotationToInterfaceOrientation: duration: . Это будет вызвано в блоке анимации, когда представление будет вращаться, и будет использоваться, чтобы дать мгновенный эффект всякий раз, когда вы входите в контроллер представления в ориентации, которой он не был ранее. Переместите и / или измените то, что вы видите там, и вы получите должным образом анимированный переход по своему желанию. В целях достойной анимации гораздо лучше перенастроить один вид, чем переключаться с одного на другой.

Сокращенный (и переформатированный для области тонкого текста здесь в StackOverflow) пример кода из проекта, который у меня есть:

- (void)willAnimateRotationToInterfaceOrientation:
              (UIInterfaceOrientation)toInterfaceOrientation 
                                         duration:(NSTimeInterval)duration
{
    if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
    {
        nameField.frame = CGRectMake(75, 107, 225, 31);
        nameLabel.frame = CGRectMake(20, 107, 47, 32);

        URLField.frame = CGRectMake(75, 145, 225, 31);
        URLLabel.frame = CGRectMake(20, 145, 47, 32);
    }
    else
    {
        nameField.frame = CGRectMake(75, 107, 155, 31);
        nameLabel.frame = CGRectMake(20, 107, 47, 32);

        URLLabel.frame = CGRectMake(250, 107, 35, 32);
        URLField.frame = CGRectMake(293, 107, 167, 31);
    }
}

Розетки классов подключаются к паре меток и текстовых полей, что позволяет пользователю вводить имя и URL-адрес. Эффект этого кода состоит в том, что представление переключается с одного столбца на два столбца в зависимости от ландшафта или портрета.

Это жесткая привязка к таким жестким позициям кода, но я еще не нашел лучшего способа. Если вас не волнует анимация перетасовки, более наглядным способом может быть просто настроить два вида отдельно в NIB и добавить / удалить соответствующий, когда наступит момент.

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