添加到收藏夹的精灵或类似效果

时间:2011-02-04 18:14:25

标签: iphone objective-c cocoa-touch xcode

我有一个带有“全部”和“收藏夹”标签的iPhone应用程序,其中包含标准的主要细节布局。当在“全部”选项卡上时,用户可以选择“添加到收藏夹”。

我正在寻找一个好的可视化队列来向用户表明这样做后,可以从“收藏夹”选项卡访问该项目。

是否存在类似'精灵'效果的东西,以便我可以指出这一点?如果没有,通知用户甚至是这样的标准方法是什么?谢谢!

4 个答案:

答案 0 :(得分:4)

Mail用于将邮件移动到文件夹中的动画怎么样?您可能对用户很熟悉,使用CAKeyframeAnimation实现起来应该不难。

答案 1 :(得分:4)

在Mac OS X中实现的“真实”精灵效果是源图像的非线性变换。实现它的一种方法是使用Core Image过滤器(在iOS上是私有/未记录的,但在Mac上可用)。

您使用'time'参数编写过滤器。对于给定时间间隔(例如{0,2})中时间参数的每个值,您需要确定图像中每个目标坐标的源坐标。如果源坐标超出范围,则将alpha设置为零,否则返回源坐标处的输入图像值。

kernel vec4 ASGenieKernel(sampler src, float t, float D, float ytarget) {

vec2 takeFrom; // In destination coordinates.
vec2 original = samplerCoord(src);
vec2 size;
float g, t2, a;
vec4 c;

size = samplerSize(src);
t2 = compare(t-1.0,t,1.0);
takeFrom.x = original.x + compare(t-1.0,0.0,1.0)*size.x*(t-1.0);

a = compare(takeFrom.x, 0.0, 1.0);
a = compare(a-0.5,0.0,compare(takeFrom.x-size.x, 1.0, 0.0));

// Apply an envelope. This is where non-linearity is introduced. 
t2 = t2 * (1.0 - tan_(1.57*original.x/size.x - 0.78539))*0.5;

g = 1.0 - D / size.y;
takeFrom.y = (original.y - t2*ytarget*g)/(1.0-t2*g);
a = compare(a-0.5,0.0,compare(takeFrom.y, 0.0, 1.0));
a = compare(a-0.5,0.0,compare(takeFrom.y-size.y, 1.0, 0.0));

takeFrom.x = compare(takeFrom.x, 0.0, takeFrom.x);
takeFrom.x = compare(takeFrom.x-size.x, takeFrom.x, 0.0);
takeFrom.y = compare(takeFrom.y, 0.0, takeFrom.y);
takeFrom.y = compare(takeFrom.y-size.y, takeFrom.y, 0.0);

c = sample(src, takeFrom);
c.w = a;

return c; }

我在这里发布了一篇博文,其中包含更多详细信息和Quartz Composer项目:Genie Effect blog post

答案 2 :(得分:3)

有很多方法可以实现这一目标。如果你想使用标准的“吮吸”效果你应该看到这个answer(或this一个...)但是,这两个答案都利用了UIView的“setAnimationPosition”方法方法,并将从App Store中拒绝您的申请(可能不是所需的结果)。

您仍然可以使用动画,使用以下代码保持默认动画位置0,0(吮吸到左上角):

[UIView beginAnimations:@"suckEffect" context:nil];
[UIView setAnimationTransition:(UIViewAnimationTransition)103 forView:self.view cache:NO];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:kAnimationDuration];

// Remove Subview

[UIView commitAnimations];

最后,虽然优秀的程序员可以自己编写这个...但是优秀的程序员会注意到它已经完成并且已经窃取了它:)

https://github.com/Ciechan/BCGenieEffect - 这是一个开源项目。

答案 3 :(得分:2)

我开始为iPhone制作精灵动画效果,请访问git://github.com/rmd6502/Genie.git。现在它的速度令人难以忍受,因为我正在“手动”进行所有计算,而不是利用硬件,但是即将进行改进。

任何想要贡献的有经验的GL开发者,请随意分叉并发送拉动请求!