是否无法使用块使用“transitionWithView”翻转viewControllers.view的子视图

时间:2011-01-13 19:39:26

标签: ios4 uianimation

我根本无法让它工作,我认为这很简单,但没有运气。

- (void) animate {

    UIView *viewA = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 300.0f, 100.0f)];
    [viewA setBackgroundColor:[UIColor blueColor]];
    UIView *viewB = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 300.0f, 100.0f)];
    [viewB setBackgroundColor:[UIColor brownColor]];

    UIView *container = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 300.0f, 100.0f)];
    [container addSubview:viewA];

    [self.view addSubview:container];

    [UIView transitionWithView:container
                      duration:0.4
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    animations:^{
                        [[[container subviews] objectAtIndex:0] removeFromSuperview];
                        [container addSubview:viewB];
                    }
                    completion:^(BOOL finished){

                    }];


}

文档建议您这样做,制作容器,添加/删除要在其间翻转的两个子视图。

我无法让它发挥作用。它只会显示viewA,然后是viewB,就像跳过动画部分一样,但是执行了块?

如果我使用[UIView transitionWithView:container切换self.view中的容器,则会翻转整个视图(可疑),但我无法通过self.view的2个子视图执行此操作。< / p>

没有办法解决这个问题吗?

我希望做一些类似于iPad 照片的应用,其中图片会翻转并缩放到全屏。

我真的希望有人可以帮助我,提前谢谢你。

1 个答案:

答案 0 :(得分:-3)

你不能在分块内放置分号。如果你想在那里做两件事,用“,”来划分它们。 如果你想要的话,CurveEase可能会很好。

这应该有效。

[UIView transitionWithView:container
                  duration:0.4
                   options:UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionCurveEaseInOut
                animations:^{
                    [[[container subviews] objectAtIndex:0] removeFromSuperview],
                    [container addSubview:viewB];
                }
                completion:^(BOOL finished){

                }];

如果没有,请考虑制作视图实例变量,并确保在尝试为它们设置动画之前分配它们。如果你想按下按钮动画,你可以直接使用发送者,如果整个视图是UIButton。

我希望它有所帮助。