iphone - 具有多个 View 的 block 转换

标签 iphone ios animation objective-c-blocks

到目前为止,我使用 begin/commit 方法在 View 之间切换。通过这种方式,可以很容易地“组合”两个或多个要同时插入到顶部的 View 。在我的例子中,它是一个带有 border2.view 的 content2.view。动画看起来像是一个 View ,内容在一个框架中。

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:speed];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:window cache:YES];

    [window addSubview:content2.view];
    [window addSubview:border2.view];

    [UIView commitAnimations];

    content1.view = nil;

现在我想将动画转换成 block 。它也有效,但不是我不知道如何“合并”两个 View 。有办法吗?

[UIView transitionFromView:content1.view
                    toView:content2.view
                  duration:2.0
                   options:UIViewAnimationOptionTransitionFlipFromRight
                completion:NULL];

最佳答案

您必须使用以下方法:

transitionWithView:duration:options:animations:completion:

transitionFromView:toView 是一种方便的方法,适用于需要从一个 View 转换到另一个 View 的最常见情况。

在这种情况下,您的代码应该是

[UIView transitionWithView:window
                  duration:2.0 
                   options:UIViewAnimationOptionTransitionFlipFromRight
                animations:^{ [window addSubview:content2.view];
                              [window addSubview:border2.view]; }
                completion:^(BOOL completed){ [content1.view removeFromSuperview];
                                              content1.view = nil; }

关于iphone - 具有多个 View 的 block 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086581/

相关文章:

iphone - ' channel 未启动 : onDOMContentLoaded' error throwing in Phonegap iPhone

iphone - 使用 AVAudioPlayer 检测 iPhone 的响铃/静音/静音开关不起作用?

javascript - Angular : combine animation with a scope change

ios - iOS 中 UIImageFromCVMat() 的应用程序崩溃

jquery - CSS3 动画与 jQuery

Java Swing - 使用 Swing Timer 类移动 JLabels

ios - iPhone 通过电话播放声音

iphone - 在哪里可以获得具有 UITouchPhaseStationary 阶段的触摸事件?

php - POST 请求与 NSDictionary

ios - 使用 UICollectionView 切换单元格