Как указано в теме, здесь происходит нечто действительно странное;) Я использую 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).
В любом случае, все идеи и предложения приветствуются!
С уважением,отмычка