ИнтерфейсОриентация полностью перепутана - PullRequest
0 голосов
/ 12 августа 2011

Как указано в теме, здесь происходит нечто действительно странное;) Я использую xcode 4.02, iOS 4.3.4

У меня есть один ViewController, с двумя видами в xib.Заголовок ViewController имеет:

IBOutlet UIView* ViewPortrait;
IBOutlet UIView* ViewLandscape;

, которые связаны с владельцем файла с двумя представлениями в xib, в соответствии с их ориентацией.Общий вид связан с одним из этих видов (портрет).

В viewDidLoad я установил

self.view = ViewPortrait;

Итак, в общем, моя проблема заключается в том, что «анимация» измененийНЕ всегда работает (только первые два раза), когда я использую

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight)) {
        self.view = ViewLandscape;
    } else {
        self.view = ViewPortrait;
    }
    return YES;
}

Но ориентация установлена ​​правильно.И когда я использую это в ДОПОЛНЕНИИ (!):

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [UIView animateWithDuration:duration
                     animations:^{
                         if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
                         {                       
                             self.view = SpeechToTextLandscape;                                     
                         }
                         else
                         {
                             self.view = SpeechToTextPortrait;
                         }

                     }];
}

Анимация работает почти идеально, за исключением одного явления: если я поворачиваю iphone x раз по часовой стрелке, все в порядке, в первый раз, когда я поворачиваю его против часовой стрелкисамо представление изменяется без какого-либо эффекта, но кадр (особенно строка состояния) поворачивается с анимацией, как обычно.То же самое, когда я поворачиваю iphone x раз против часовой стрелки, а затем в первый раз по часовой стрелке.после изменения направления (кроме упомянутого первого раза) все повторяющиеся вращения в одном и том же направлении анимируются, как и ожидалось.

Если я делаю вращение по часовой стрелке / против часовой стрелки (влево, вправо, влево, вправо и т. д.), у меня всегда естьэтот странный эффект: само представление поменяется местами мгновенно, а «рамка» со строкой состояния анимируется примерно за секунду.

Итак, я совершенно сбит с толку, потому что у меня есть небольшие примеры приложений, выполняющиханимированный обмен мнениями полностью корректен, только с кодом из shouldAutorotateToInterfaceOrientation (но я знаю, это должно быть сделано в willAnimateRotationToInterfaceOrientation).

В любом случае, все идеи и предложения приветствуются!

С уважением,отмычка

...