ios开发备忘录十五

需求需要在视图之间切换的时候有向上翻阅日历的效果,目前使用的还是storyboard开发,不免要自己重写UIStoryBoardSegue

故新建一个继承于UIStoryBoardSegue的objective-c类

主要的还是重写其中的perform方法

- (void)perform{
    self.currentView = self.sourceViewController;
    self.nextView = self.destinationViewController;
    
    [UIView beginAnimations:@"animation" context:nil];
	[UIView setAnimationDuration:1.0f];
	[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:currentView.view cache:YES];
[UIView setAnimationDidStopSelector:@selector(animationFinish)];
    [UIView commitAnimations];
    NSLog(@"start");
}


- (void)animationFinish{
    NSLog(@"finish");
    [[[self currentView]navigationController]pushViewController:[self nextView] animated:YES];
}

其中

[UIView setAnimationDelegate:self];
这句话尤为重要,如果不设置代理的话则没有办法执行注册在AnimationDidStop之后的回调函数,也就是animationFinish这个函数,这个问题也是纠结了好长时间,后来在stackoverflow上面找到了答案。

你可能感兴趣的:(ios开发备忘录十五)