在横向模式下使用 UIViewAnimationTransitionFlipFromLeft 的 iPhone 翻转动画 [英] iPhone Flip Animation using UIViewAnimationTransitionFlipFromLeft in landscape mode

查看:27
本文介绍了在横向模式下使用 UIViewAnimationTransitionFlipFromLeft 的 iPhone 翻转动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个 iPhone 应用程序,我在其中实现了一个动画 UIViewAnimationTransitionFlipFromLeft.在这里,我的应用程序在纵向模式下运行良好.它正在执行与指定的动画相同的动画,意思是从左到右翻转.

I am working on one iPhone application in which I implemented one animation UIViewAnimationTransitionFlipFromLeft. Here my application works fine in the Portrait mode. It is doing the same animation as specified means Flip from Left to Right.

但是当我在横向模式下执行此 UIViewAnimationTransitionFlipFromLeft 时,它不会从左向右旋转.而不是从上到下旋转.这是一个非常关键的问题.你能帮我解决这个问题吗.

But when I am doing this UIViewAnimationTransitionFlipFromLeft in landscape mode then it is not rotating from left to right. Instead of it is rotating from top to bottom. This is really critical issue. Can you help me out to solve this.

我用于 iPhone 应用程序旋转视图的代码如下:

The code I am using for iPhone application to rotate the view is as follows:

   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];

谢谢,最好的祝福,Gurpritsingh Saini

Thanks, Best Regards, Gurpritsingh Saini

推荐答案

如果您使用的是 iOS 4.0 或更高版本,以下内容将完全符合您的要求(我只是对其进行了测试以确保)

If you are using iOS 4.0 or later, the following will do exactly what you want (I just tested it out to make sure)

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];

我对上面的代码做了一些改动(没什么新鲜的,只是注释掉导航控制器,因为这不是必需的).

I'm changing the above code a bit (nothing new, just commenting out the navigation controller because it's not necessary for this).

所以有几种方法可以解决这个问题(就跟踪下一个视图而言),但这是我能想到的最简单的方法.您已经可以从视图 1 切换到 2,所以我将解释如何从 2 切换到 10(或您需要的任何数量).

So there are several ways to go about this (as far as keeping track of the next view), but this is the easiest I can think of. You can already switch from view 1 to 2, so I'm going to explain how to get from 2 to 10 (or however many you need).

基本上,视图转换持续的时间太长,viewDidLoad 无法捕捉到转到下一个视图的调用.所以我们需要做的是设置一个定时器,等待并发送一个方法在稍后的时间进行切换.所以这就是您将在视图 2(以及 3 和 4 等)中看到的代码.

Basically, the view transition lasts too long for viewDidLoad to catch a call to go to the next view. So what we need to do is set up a timer that waits and sends a method to switch at a later time. So this is the code you would see in view 2 (and 3 and 4, etc.).

- (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];
}

我只等待 1 秒钟,直到我调用 switch 方法,但是如果您在视图中加载了很多内容,您可能需要等待更长时间.1.5 秒应该绰绰有余,但您可以尝试看看它在哪些方面有效,哪些方面无效.

I only wait 1 second until I call the switch method, but if you are loading a lot into your views, you may want to wait a bit longer. 1.5 seconds should be more than enough, but you can play around with that to see where it works and doesn't work.

接下来,您必须在switchView 方法中调用下一个视图.

Next, you have to call the next view in the switchView method.

- (void)switchView {
    NextView *myNextView = [[NextView alloc] initWith ... ];
    [UIView transitionFromView:self.view toView:nextView.view duration:1 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil];
    [nextView release];
}

这对我来说非常有效.为了确保获得新视图,我为每个视图分配了标签,并在每个视图的 viewDidLoad 方法中添加了 UILabels 作为子视图,每个视图都显示了其视图的编号.所以希望这就是你所需要的.我相信您有更复杂的事情需要做,但这将为您提供获得所需外观所需的动画和逻辑.(附带说明,viewDidAppear 在执行此操作时似乎不会被调用,因此如果您确实需要使用它,则可能需要从 viewDidLoad 手动调用它,但除此之外它工作正常)

This worked perfectly for me. Just to make sure I was getting new views, I assigned tags to each view and added UILabels as subviews in each view's viewDidLoad method and each showed the number of its view. So hopefully this is what you needed. I'm sure you have more complex things you will need to do, but this will give you the animation and logic you need to get the look you want. (on a side note, viewDidAppear doesn't seem to get called when doing this, so it might be necessary to call it manually from viewDidLoad if you really need to use it, but otherwise it works fine)

这篇关于在横向模式下使用 UIViewAnimationTransitionFlipFromLeft 的 iPhone 翻转动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆