[英]Custom Segue push weird behavior
我正在尝试一个简单的项目(故事板),其中用户从右向左滑动以进入下一个视图,依此类推,然后返回用户从左向右滑动。 我想实现转换以跟随滑动(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];
}
但这似乎并没有做应该做的事情。
说明:
当即时消息处于风景中时(我的项目仅在风景中起作用)并且主页按钮位于左侧,动画来自顶部!!! 当我在风景中并且主页按钮在右边时,动画来自底部!
尽管我已将其指定为从左开始。 另一件事是,当我使用不同的风景(左侧或右侧的homebutton)时,它会改变方向。
任何想法为什么会这样???
好的,这是我的做法,尽管非常不合常规。
我先检查iPad的方向,然后而不是实际向左或向右走,而实际上是去往顶部/底部...好吧,这是我的做法,尽管非常不合常规。
我先检查iPad的方向,然后不去左右,而是直接去顶部/底部...
if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft)
{
//Landscape Left
//.......
transition.subtype = kCATransitionFromTop;
}
else if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight)
{
//Landscape Right
//......
transition.subtype = kCATransitionFromBottom;
}
您的意见是否在导航控制器中? 您是否尝试过简单地使用“推”式segue?
在滑动手势识别器中,只需调用:
[self performSegueWithIdentifier:@"NextScreenIdentifier" sender:sender];
并且您应该获得正确的行为(左→右/右→左过渡)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.