App*_*ect 13 iphone core-animation uiview uiviewanimation uiviewanimationtransition
我正在开发一个iPhone应用程序,我在其中实现了一个动画UIViewAnimationTransitionFlipFromLeft.这里我的应用程序在纵向模式下工作正常.它正在执行与指定相同的动画,即从左到右翻转.
但是当我在横向模式下执行此UIViewAnimationTransitionFlipFromLeft时,它不会从左向右旋转.而不是它从上到下旋转.这是非常关键的问题.你能帮帮我解决这个问题.
我用于iPhone应用程序旋转视图的代码如下:
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:self.view.window cache:NO];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
[UIView commitAnimations];
[self.navigationController pushViewController:objSecond animated:YES];
Run Code Online (Sandbox Code Playgroud)
谢谢,最诚挚的问候,Gurpritsingh Saini
jus*_*tin 15
如果您使用的是iOS 4.0或更高版本,以下内容将完全符合您的要求(我只是测试了它以确保)
NewView *myNewView = [[NewView alloc] initWith.....];
[UIView transitionFromView:self.view toView:myNewView.view duration:1 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil];
//[self.navigationController pushViewController:myNewView animated:NO];
[myNewView release];
Run Code Online (Sandbox Code Playgroud)
编辑:我正在改变上面的代码(没什么新的,只是注释掉导航控制器,因为它没有必要).
所以有几种方法可以解决这个问题(就跟踪下一个视图而言),但这是我能想到的最简单的方法.你已经可以从视图1切换到2,所以我将解释如何从2到10(或者你需要多少).
基本上,视图转换持续时间太长,viewDidLoad无法接听呼叫以转到下一个视图.所以我们需要做的是设置一个定时器,等待并发送一个方法以便稍后切换.所以这是您在视图2(以及3和4等)中看到的代码.
- (void)viewDidLoad {
// this gets called before animation finishes, so wait;
self.navigationController.delegate = self;
// you will need to set the delegate so it can take control of the views to swap them;
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(switchView) userInfo:nil repeats:NO];
}
Run Code Online (Sandbox Code Playgroud)
我只等待1秒,直到我调用switch方法,但是如果你在视图中加载了很多,你可能需要等待一段时间.1.5秒应该绰绰有余,但你可以玩它来看看它的工作原理和不起作用.
接下来,您必须调用方法中的下一个视图switchView.
- (void)switchView {
NextView *myNextView = [[NextView alloc] initWith ... ];
[UIView transitionFromView:self.view toView:nextView.view duration:1 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil];
[nextView release];
}
Run Code Online (Sandbox Code Playgroud)
这对我很有用.为了确保我获得新视图,我为每个视图分配了标签,并在每个视图的viewDidLoad方法中添加了UILabel作为子视图,并且每个都显示了其视图的编号.所以希望这就是你所需要的.我相信你需要做更复杂的事情,但这会给你动画和逻辑,让你获得你想要的外观.(另外,viewDidAppear在执行此操作时似乎没有被调用,因此viewDidLoad如果您确实需要使用它,可能需要手动调用它,否则它可以正常工作)
| 归档时间: |
|
| 查看次数: |
9614 次 |
| 最近记录: |