Я внедрил пользовательский класс segue для эмуляции перехода push без панели навигации. Хитрость заключается в том, чтобы сделать снимки, добавить их в представление, заменить viewController, переместить моментальные снимки и, наконец, удалить их. Это создает горизонтальное перемещение viewController, но на самом деле перемещаются только два UIImagesView.UIView animateWithDuration не анимация в ios8
Следующий код реализует это.
self.destinationImageView.frame = offsetFrameD;
self.sourceImageView.frame = offsetFrameS;
//ViewController replacement
[self.sourceViewController presentModalViewController:self.destinationViewController animated:NO];
//Overpose the snapShot who will simulate the transition between vies.
[destinationView addSubview: self.sourceImageView];
[destinationView addSubview: self.destinationImageView];
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.destinationImageView.frame = self.finalFrameD;
self.sourceImageView.frame = self.finalFrameS;
}
completion:^(BOOL finished) {
[self.sourceImageView removeFromSuperview];
[self.destinationImageView removeFromSuperview];
}];
Этот код работал с iOS 7. Однако при использовании iOS 8 кажется, что анимация не выполняется. Объекты destinationImageView и sourceImageView напрямую перемещаются в finalPosition (БЕЗ ПРЕДОТВРАЩЕНИЯ), и блок завершения не вызывается, поэтому оба UIImageView не удаляются окончательно.
Кто-нибудь знает, как анимация должна выполняться с iOS 8?
ли вы включили AutoLayout? Включили ли вы классы размера в своем раскадровке? – Fogmeister
Посмотрите на этот вопрос, это может вам помочь: http://stackoverflow.com/questions/24472663/ios-8-animation-bug – BoilingLime