我已经实现了一个自定义segue类来模拟没有导航栏的推送过渡。诀窍是拍摄快照,将它们添加到视图中,替换viewController,移动快照,最后删除它们。这会影响viewController的水平移动,但实际上只移动了两个UIImagesView。
以下代码实现了这一点。
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(WITHOUT ANIMATING)并且不调用完成块,因此最终都不会删除UIImageView。
有谁知道应该如何使用iOS 8执行动画?
答案 0 :(得分:4)
您应该调整自动布局约束而不是帧位置。看看这个解决方案。我希望它有所帮助。 UIView transitionWithView & setting the frame no longer works iOS8
答案 1 :(得分:0)
在动画开始之前使用以下代码行:
[UIView setAnimationsEnabled:YES];