Iphone 为什么页面控制项目中没有动画?

Iphone 为什么页面控制项目中没有动画?,iphone,cocoa-touch,uiscrollview,uipagecontrol,Iphone,Cocoa Touch,Uiscrollview,Uipagecontrol,我正在使用PageControl项目,它位于苹果的开发网站上。我在项目中添加了一个翻转视图,并在每个视图/页面的右上角添加了一个信息图标。由于某些原因,只有第一页能够设置翻转动画。上的第2页仍然显示翻转的页面,但不设置动画。为了确保第1页没有什么特别之处,我切换了第1页和第2页,效果很好。位置1的第2页已设置动画,而位置2的第1页未设置动画。你知道为什么会发生这种情况,或者我如何解决它吗 我确实看了这个线程,它似乎是同一个问题:。但是,我的flipview是一个UIViewController,

我正在使用PageControl项目,它位于苹果的开发网站上。我在项目中添加了一个翻转视图,并在每个视图/页面的右上角添加了一个信息图标。由于某些原因,只有第一页能够设置翻转动画。上的第2页仍然显示翻转的页面,但不设置动画。为了确保第1页没有什么特别之处,我切换了第1页和第2页,效果很好。位置1的第2页已设置动画,而位置2的第1页未设置动画。你知道为什么会发生这种情况,或者我如何解决它吗

我确实看了这个线程,它似乎是同一个问题:。但是,我的flipview是一个UIViewController,带有信息图标的类也是。在另一个线程中,他们使用UIView


我确实实现了上面线程中的showInfo代码。在第2页上,我看不到翻转。然后我滚动到第1页,看到它已经翻了。不知道为什么它不在第2页。在第1页上,它不会设置翻转动画。flipview突然出现。

您有containerView吗?可以在其中添加和删除子视图的内容?如果您有两个ViewController,一个来一个去,而没有containerView,动画可能会中断。我使用一个rootViewController,并使用后面的rootViewController设置所有页面之间的动画。这是我的翻页代码,您可能需要进行一些编辑,以使其适合您:

(请记住,self是rootViewcontroller,一个具有空白视图的viewcontroller(将其着色以使其与您的视图匹配))


我现在有它翻转,除了当我回到父视图。我从翻转视图[self.view removeFromSuperview]执行此操作。而您正在这样做[self.view addSubview:coming.view]。我的代码导致它在返回到父对象时无法设置动画。我也无法使用animationDiEnd:代码,因为这会导致我的翻转视图消失。如果调用BeginAnimation而不是animationDiEnd,则BeginAnimation之后的调用将排队,并且尚未发生。不好的状态下离开的东西。翻转视图时,将添加一个视图,删除另一个视图。如果您不删除它,那么它将保留在视图后面,您将无法返回到它(至少在上面的代码中)。继续玩这些程序,直到你知道发生了什么。一旦你掌握了,你可能也会找到其他的方法。谢谢。我没有做的一件事是你提到的容器视图。我从页面视图翻页,然后返回。页面视图永远不会从任何视图中删除,因为这也会删除生成的翻转视图。只有两种观点。这可能是主要问题吗?我不确定容器视图是否适合。我通过@selector调用beginAnimations和AnimationDiEnd。我添加了一个rootViewController,并从那里启动了其他视图。我回到了起点。第一个页面可以正常工作,但之后,翻转视图会翻转过来,并在离开翻转视图时再次显示。然后它消失了,我看到了rootViewController。此外,在第1页上,翻转后,页面控件消失。
- (void)switchTwoViews:(UIViewController *)view1 otherView:(UIViewController *)view2
{
    /*
     This method is called to switch views.
     It flips the displayed view from the main view to the flipside view and vice-versa.
     */

    UIViewController *coming = nil;
    UIViewController *going = nil;
    UIViewAnimationTransition transition;

    [view1.view setUserInteractionEnabled: NO];
    [view2.view setUserInteractionEnabled: NO];
    if (view1.view.superview == nil) {
        coming = view1;
        going = view2;
        transition = UIViewAnimationTransitionFlipFromLeft;
    }
    else {
        coming = view2;
        going = view1;
        transition = UIViewAnimationTransitionFlipFromRight;
    }
        // in some cases the following is needed to size the view
    //  coming.view.frame = [UIScreen mainScreen].applicationFrame;

    //  going.view.alpha = 1.0;     //uncomment these lines if we want fading of views
    //  coming.view.alpha = 0.0;

    NSArray *viewArray = [[NSArray alloc] initWithObjects:coming, going, nil];
    [coming viewWillAppear:YES];
    [going viewWillDisappear:YES];
    [UIView beginAnimations:@"View Flip" context:viewArray]; {
        [UIView setAnimationDuration:1.0];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(animationDidEnd:finished:context:)];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

        //      coming.view.alpha = 1.0;        //uncomment these lines if we want fading of views
        //      going.view.alpha = 0.0;

        [UIView setAnimationTransition:transition forView:self.view cache:YES];
        [self.view addSubview: coming.view];
    }
    [UIView commitAnimations];

}

- (void) animationDidEnd:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
    NSArray *viewArray = context;
    [((UIViewController *)[viewArray objectAtIndex:1]).view removeFromSuperview];
    [[viewArray objectAtIndex:1] viewDidDisappear:YES];
    [[viewArray objectAtIndex:0] viewDidAppear:YES];
    [[[viewArray objectAtIndex:0] view] setUserInteractionEnabled: YES];
    [viewArray release];
}