我正在尝试一个简单的项目(故事板),用户从右向左滑动以进入下一个视图,依此类推,并从左到右返回用户滑动。 我希望实现过渡以跟随滑动(L - > R或R - > L)。
我发现了这个:
-(void)perform {
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
CATransition* transition = [CATransition animation];
transition.duration = .25;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
}
但这似乎没有做应该做的事。
说明:
当我在风景中(我的项目仅在风景中工作)并且主页按钮在左侧时,动画来自TOP !!! 当我在横向和主页按钮在右边时,动画来自BOTTOM !!!
虽然我已将其指定为从左侧开始。 另一件事是,当我使用不同的风景(左边或右边的按钮)时,它会改变方向。
任何想法为什么会发生这种情况?
答案 0 :(得分:0)
好的,这就是我做的,虽然非常不正统。
我正在检查iPad的方向,而不是向左或向右移动实际上是顶部/底部... 好吧,这就是我做到的,虽然非常不正统。
我正在检查iPad的方向,然后不是向左或向右移动实际上是顶部/底部......
if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft)
{
//Landscape Left
//.......
transition.subtype = kCATransitionFromTop;
}
else if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight)
{
//Landscape Right
//......
transition.subtype = kCATransitionFromBottom;
}
答案 1 :(得分:0)
您的视图是否在导航控件中? 您是否尝试过使用“推”式的segue?
在滑动手势识别器中,只需致电:
[self performSegueWithIdentifier:@"NextScreenIdentifier" sender:sender];
你应该得到正确的行为(左 - >右/右 - >左转)。