我想知道Ipad的音乐文件夹中使用的功能的名称是什么,当点击相册文件夹时,会在动画视图中弹出有关该相册的详细信息。
我尝试使用presentModelViewController,但其功能不同。
如果有人可以帮助我,那就太棒了。
答案 0 :(得分:1)
在iPad上,你有几个不同的动画模式视图控制器选项,你可以在这里找到它们:UIModalTransitionStyle。
但是,如果你指的是对相册的“缩放和翻转”效果,我很确定这是私人行为所以你需要自己开发....你可能能够完成这个使用Core Graphics / Quartz。
答案 1 :(得分:1)
我只是设法得到某事。像这样使用CoreAnimation / QuartzCore Framework ... 一定要
#import <QuartzCore/QuartzCore.h>
如果要进行动画处理,请使用CATransform3D以及记录不佳的CATransform3D.m34属性。这将执行动画的上半部分(假设200x200&lt; - &gt; 450x450,旋转180°):
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDelegate:self];
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -1000; // this turns on perspective!
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 90.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
someView.layer.transform = rotationAndPerspectiveTransform;
someView.bounds = CGRectMake(0, 0, 325, 325);
[UIView commitAnimations];
对于动画的后半部分,您必须在层次结构中添加/删除视图。此示例显示隐藏/显示已作为someView
的子视图存在的视图,它还使用BOOL isUp
实例变量(aniation的前半部分独立于isUp-flag! )
- (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;
}
}
}
最后一件事:视图中的所有内容都会显示为镜像,可能不是理想的解决方案,但通过将CGAffineTransform
应用于子视图进行镜像可以解决问题:
- (void)viewDidLoad
{
[super viewDidLoad];
someSubView.transform = CGAffineTransformMakeScale(-1, 1);
isUp = NO;
}
对于这个解决方案我迟到了一个月,但我希望它能帮助某人:)
我首先尝试使用animateWithDuration:动画:完成:基于块的API但结果严重滞后(即使没有触摸子视图也没有平滑的第一/第二半动画)。