NSLog(@"started");
[UIView animateWithDuration:2 animations:^{
NSLog(@"inside");
} completion:^(BOOL finished){
NSLog(@"finished");
}];
这是输出:
2015-09-26 13:17:21.541看[9894:1848566]开始了
2015-09-26 13:17:21.541在
中查看[9894:1848566]2015-09-26 13:17:21.551看[9894:1848566]完成了
请注意,时间戳是从“内部”到“完成”之间的毫秒数。'
这是我的完整代码,结果相同且动画无法运行。 这是为自定义viewController演示文稿完成的。
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
// Get the set of relevant objects.
UIView *containerView = [transitionContext containerView];
UIViewController *fromVC = (TJWCameraRollCVC *)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
TJWPhotoViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey];
UIView *fromView = [transitionContext viewForKey:UITransitionContextFromViewKey];
// Set up some variables for the animation.
CGRect containerFrame = containerView.frame;
CGRect toViewStartFrame = [transitionContext initialFrameForViewController:toVC];
CGRect toViewFinalFrame = [transitionContext finalFrameForViewController:toVC];
CGRect fromViewFinalFrame = [transitionContext finalFrameForViewController:fromVC];
NSMutableArray *oldObjects = [[NSMutableArray alloc] init];
UIImageView *zoomImage;
// Set up the animation parameters.
if (presenting) {
// Modify the frame of the presented view so that it starts
// offscreen at the lower-right corner of the container.
UIImageView *zoomImage = [[UIImageView alloc] initWithImage:toVC.chosenImage];
zoomImage.frame = CGRectMake(toVC.fullScreenOrigin.x, toVC.fullScreenOrigin.y, containerFrame.size.width, containerFrame.size.height);
zoomImage.alpha = 0.2;
zoomImage.transform = CGAffineTransformMakeScale(0.1, 0.1);
[containerView addSubview:zoomImage];
toView.frame = CGRectMake(containerFrame.size.width, containerFrame.size.height, containerFrame.size.width, containerFrame.size.height);
}
else {
// Modify the frame of the dismissed view so it ends in
// the lower-right corner of the container view.
fromViewFinalFrame = CGRectMake(containerFrame.size.width, containerFrame.size.height, toView.frame.size.width, toView.frame.size.height);
}
// Always add the "to" view to the container.
// And it doesn't hurt to set its start frame.
[containerView addSubview:toView];
// Animate using the animator's own duration value.
NSLog(@"started");
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
NSLog(@"inside");
if (presenting) {
NSLog(@"presenting");
// Move the presented view into position.
[zoomImage setFrame:toViewFinalFrame];
[zoomImage setTransform: CGAffineTransformMakeScale(1, 1)];
[zoomImage setAlpha:1];
}
else {
// Move the dismissed view offscreen.
[fromView setFrame:fromViewFinalFrame];
}
} completion:^(BOOL finished){
NSLog(@"finished");
BOOL success = ![transitionContext transitionWasCancelled];
NSLog(@"%d", success);
// After a failed presentation or successful dismissal, remove the view.
if ((presenting && !success) || (!presenting && success)) {
[toView removeFromSuperview];
}
if (presenting && success) {
// toView.frame = containerFrame;
[zoomImage removeFromSuperview];
}
// Notify UIKit that the transition has finished
[transitionContext completeTransition:success];
}];
}