После отключения iPad от Mac анимация, вызываемая в viewDidAppear, не происходит

Рабочий процесс кода моего приложения выглядит следующим образом: viewDidLoad->viewDidAppear->create subview->animate subview

Анимация заставляет подпредставление переходить от чрезвычайно маленького размера к размеру, которым он должен быть, придавая ему эффект, аналогичный показу UIAlert. Код, который у меня есть, работает безупречно, когда я запускаю приложение с моего Mac, но почему-то не хочет этого делать после того, как я отключил iPad и запустил его сам по себе. Я попытался выйти из приложения и попробовать снова, и даже пошел на то, чтобы перезагрузить iPad, чтобы заставить его работать, но безрезультатно.

Вот мой код:

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    [self setUpScreen];
}

И метод setUpScreen...

// Populates the setUpView with various other items (unimportant for the issue in question)
setUpView.transform = CGAffineTransformMakeScale(0.01, 0.01);
[self.view addSubview:setUpView];
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseOut
                 animations:^{
                     setUpView.transform = CGAffineTransformIdentity;
                 }
                 completion:^(BOOL finished){
                 }];

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

Я попытался добавить задержку в методе animatewithDuration:, а также попытался добавить сон перед вызовом метода setUpView. Я готов попробовать что угодно.

Кроме того, у меня подвид исчезает с анимацией, когда на нем нажимается кнопка, и эта анимация работает нормально, независимо от того, как я запускаю приложение, моя единственная проблема - при запуске.


person Louie Bertoncin    schedule 05.12.2013    source источник


Ответы (1)


Я обнаружил, что мой [NSThread sleepForTimeInterval:0.1] между [super viewDidAppear:animated] и [self setUpScreen] был недостаточно длинным (одно из решений, которые я пробовал перед публикацией вопроса). Кажется, что установка временного интервала на 0,5 решает мою проблему. Однако, если есть лучшие решения, пожалуйста, поделитесь.

person Louie Bertoncin    schedule 05.12.2013