类似于Ipad音乐文件夹中的动画弹出视图

类似于Ipad音乐文件夹中的动画弹出视图,ipad,popup,Ipad,Popup,我想知道Ipad音乐文件夹中使用的功能的名称,当点击相册文件夹时,有关该相册的详细信息会在动画视图中弹出 我尝试使用presentModelViewController,但其功能有所不同 如果有人能帮我,那就太好了。在iPad上,你有几个不同的选项来设置模态视图控制器的动画,你可以在这里找到它们: 然而,如果你指的是专辑中的“缩放和翻转”效果,我很确定这是一种私人行为,所以你需要自己开发。。。。您可能可以使用Core Graphics/Quartz来完成此任务。我刚刚设法使用CoreAnimat

我想知道Ipad音乐文件夹中使用的功能的名称,当点击相册文件夹时,有关该相册的详细信息会在动画视图中弹出

我尝试使用presentModelViewController,但其功能有所不同


如果有人能帮我,那就太好了。

在iPad上,你有几个不同的选项来设置模态视图控制器的动画,你可以在这里找到它们:


然而,如果你指的是专辑中的“缩放和翻转”效果,我很确定这是一种私人行为,所以你需要自己开发。。。。您可能可以使用Core Graphics/Quartz来完成此任务。

我刚刚设法使用CoreAnimation/QuartzCore框架实现了类似的功能。。。 一定要

#import <QuartzCore/QuartzCore.h>
对于动画的后半部分,必须将视图添加/删除到层次中。此示例显示隐藏/显示已作为
someView
子视图存在的视图,它还使用
BOOL isUp
实例变量(aniation的前半部分独立于isUp标志!)

最后一件事:视图中的所有内容都将显示为镜像,这可能不是理想的解决方案,但通过对子视图应用
CGAffineTransform
进行镜像可以实现以下目的:

- (void)viewDidLoad
{
    [super viewDidLoad];
    someSubView.transform = CGAffineTransformMakeScale(-1, 1);
    isUp = NO;
}
我使用此解决方案已经晚了一个月,但我希望它对某人有所帮助:)


我第一次尝试使用animateWithDuration:animations:completion:block-based API,但结果是严重滞后(即使不接触子视图,上/下半部分动画也不会平滑)。

@Jamie。。谢谢你的答复。。我已经试过各种款式,没有一款能满足我的要求。。。我想这也是我想要的“缩放和翻转效果”这个词。。因为对我来说,向其他人解释我想要什么效果会更容易…谢谢你的回答。。我试用了你的代码,但对我没有任何效果。。你能给我解释一下什么是someView、someSubView和greenView吗?我认为someView将是我的[自我视图],我的someSubView将是我的子视图。。但是什么是greenView?当我将u发布的“前半部分”动画代码应用到我的[self.view]时,它所产生的效果是一种内爆效果。。是这样吗?sry greenView是我在这篇文章中使用的示例代码的一部分。你可以看看我的这个动画测试项目-刚刚上传:)你能解释一下代码中发生了什么吗?在动画方法中,绿色的尺寸为325325,动画停止后,其尺寸为450450,颜色为红色。。您在哪里进行转换?如果我只想用两个视图来做这件事。。假设我有一个尺寸为300300的视图,当我单击一个按钮时,我添加了一个子视图,该子视图具有相同的效果,比如从尺寸0,0到尺寸300300。。有没有可能用你的代码来做这件事?蓝色视图从哪里来?
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
    if (flag) {
        if (isUp) {
            someSubView.hidden = YES; // hide subview
            [UIView beginAnimations:nil context:NULL];

            [UIView setAnimationDuration:0.5];
            [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
            CATransform3D rotationAndPerspectiveTransform = CATransform3DRotate(someView.layer.transform, -90.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
            someView.layer.transform = rotationAndPerspectiveTransform;
            someView.bounds = CGRectMake(0, 0, 200, 200);

            [UIView commitAnimations];
            isUp = NO;
        } else {
            someSubView.hidden = NO; // Show subview
            [UIView beginAnimations:nil context:NULL];

            [UIView setAnimationDuration:0.5];
            [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
            CATransform3D rotationAndPerspectiveTransform = CATransform3DRotate(someView.layer.transform, 90.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
            someView.layer.transform = rotationAndPerspectiveTransform;
            someView.bounds = CGRectMake(0, 0, 450, 450);

            [UIView commitAnimations];
            isUp = YES;
        }
    }
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    someSubView.transform = CGAffineTransformMakeScale(-1, 1);
    isUp = NO;
}