2015-09-14 4 views
0

Я пытаюсь установить кадр моего изображения заранее, а затем преобразовать его с помощью animateWithDuration. Он отлично работает, пока я не добавлю код анимации. Ошибка, которую я получаю:ошибка при использовании animateWithDuration UIImage switch case

exc_bad_access (код = 2, адрес = 0x0). Случай 1:

 [imageView setFrame:CGRectMake(-400, -150, imageView.frame.size.width, imageView.frame.size.height)];  
     imageView.image = [UIImage imageNamed:@"jennLawrence.JPG"]; 



     [UIView animateWithDuration:55 
           delay:0.5 
          options:UIViewAnimationOptionBeginFromCurrentState 
         animations:(void (^)(void)) ^{ 
          imageView.frame = CGRectMake(0, 50, 80, 0); 
         } 
         completion:^(BOOL finished){ 
          imageView.transform=CGAffineTransformIdentity;    
         }]; 
+0

Попробуйте заменить 'анимации: (void (^) (void))^{ imageView.frame = CGRectMake (0, 50, 80, 0); } 'by' animations:^{ imageView.frame = CGRectMake (0, 50, 80, 0); } ' – anhtu

+0

Спасибо за ответ. Это заставило изображение анимировать, но, кажется, переопределяет исходный [imageView setFrame: CGRectMake (-400, -150, imageView.frame.size.width, imageView.frame.size.height)]; Теперь изображение начинается с другой точки при первой загрузке. –

+0

Есть ли способ установить исходное положение, которое я хочу для изображения внутри метода ViewDidLoad? Вместо того, чтобы устанавливать его внутри моего оператора switch, а затем снова установить его на 2 строки позже? –

ответ

0

Можете ли вы поставить заявление блок завершения внутри условие IF готового параметра.

Завершенный параметр будет НЕТ при отмене анимации: обычно, когда вы прервали анимацию, чтобы начать другую (например, вы начали новую анимацию до того, как она закончилась, с параметром, начинающимся с текущее состояние), или вы сразу отменили анимацию.

Итак, даже если анимация была отменена, ваш блок завершения все равно будет вызван, и это может привести к сбою.

Сбой, по-видимому, происходит из-за доступа к объекту, которого не существует. Вы также можете попробовать использовать Zoombie, чтобы сузить объект, вызвав крушение.