Обращайтесь с ориентацией при отображении вида - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть несколько изменений, которые вносятся в UIView при изменении ориентации. Это отлично работает. Проблема возникает при добавлении вида после того, как ориентация телефона уже переключена. Это приводит к тому, что ни один из методов rotate не вызывается, и поэтому не дает мне возможности вносить изменения.

Каков будет правильный способ обработки этого, вероятно, в ViewDidLoad? Смогу ли я определить текущую ориентацию в этой точке?

Имейте в виду, что это несколько небольших изменений, которые мне нужно будет сделать, поэтому я не хочу загружать другое перо или что-то подобное

Большое спасибо:)

РЕДАКТИРОВАТЬ *, просто чтобы прояснить ситуацию: Как я уже говорил, представление даже не создается, когда изменяется ориентация устройства. Ориентация меняется на альбомную -> пользователь нажимает кнопку, которая показывает другое представление -> это новое представление создается и отображается, но его позиционирование по умолчанию предназначено для портретной ориентации -> при отображении представления элементы, которые я переставляю в методе willAnimateRotationToInterfaceOrientation находятся в неправильном положении.

1 Ответ

1 голос
/ 06 сентября 2011

Обычно я помещаю анимацию, которая возникает, когда пользователь поворачивает устройство (главным образом, манипулируя кадрами видов), в методе willAnimateToInterfaceOrientation. В форме скелета это выглядело бы так:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
                                         duration:(NSTimeInterval)duration
{
    //NSLog(@"willAnimateRotationToInterfaceOrientation: %d", toInterfaceOrientation);

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
    {
        // portrait
    }
    else
    {
        // landscape
    }
}

РЕДАКТИРОВАТЬ: В ситуациях, когда мне нужно запомнить ротацию устройства для будущего использования, я установил ivar в своем классе контроллера представления под названием currentOrientation (тип int), а затем сделал это:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    //NSLog(@"shouldAutorotateToInterfaceOrientation: %d", toInterfaceOrientation);

    if (toInterfaceOrientation == UIDeviceOrientationPortrait || toInterfaceOrientation == UIDeviceOrientationPortraitUpsideDown ||
        toInterfaceOrientation == UIDeviceOrientationLandscapeLeft || toInterfaceOrientation == UIDeviceOrientationLandscapeRight)
    {
        currentOrientation = toInterfaceOrientation;
    }

    return YES;
}

Затем, при запуске методов в контроллере вида, я знаю, в какой ориентации находится устройство.

...