gpt4 book ai didi

ios - 有深度的摇摆动画

转载 作者:行者123 更新时间:2023-12-01 16:44:12 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个弹出横幅,每次用户从服务器收到通知时都会跳转,这个弹出窗口看起来像一个带有字符串的标志,附加到屏幕顶部(不是代码字符串,哈哈)。

我正在尝试实现摆动动画,但不是左右摆动!来回,所以底部 yz 点应该急剧变化,所以看起来弹出标志正在向用户移动,然后返回,依此类推....

我希望我的问题很清楚,这件事困扰了我很长时间.. 谢谢! !

编辑

所以我添加了一个图像(真的画得很糟糕,对此感到抱歉),它描述了我试图达到的效果:

http://s1.postimg.org/hox4ly3sv/Draw_Sign.png

再次,对糟糕的绘图感到抱歉。

这是我到目前为止所做的代码:

// container
CALayer *container = [CALayer layer];
container.frame = CGRectMake(50, 50, 100, 100);
[self.view.layer addSublayer:container];


//Create a Plane

CALayer *purplePlane = [self addPlaneToLayer:container
size:CGSizeMake(100, 100)
position:CGPointMake(250, 150)
color:[UIColor purpleColor]];



[container addSublayer:imageView.layer];


//Apply transform to the PLANE
CATransform3D t = CATransform3DIdentity;
//Add perspective!!!
t.m34 = 1.0/ -100;
//t.m34 = 1.0/ -500;
t = CATransform3DRotate(t, degToRad(45.0), 0, 1, 0);

purplePlane.transform = t;


CATransform3D transform = CATransform3DIdentity;
// transform.m34 = 1.0 / -50;
container.transform = transform;

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
animation.values = [NSArray arrayWithObjects:

[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0.8 * M_PI / 2, 100, 100, 0.2)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0 * M_PI / 2, 100, 100, 0.2)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, -0.6 * M_PI / 2, 100, 1, 0.2)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0 * M_PI / 2, 100, 1, 0.2)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0.3 * M_PI / 2, 100, 1, 0.2)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0 * M_PI / 2, 100, 1, 0.2)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, -0.1 * M_PI / 2, 100, 1, 0.2)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0 * M_PI / 2, 100, 1, 0.2)],



// [NSValue valueWithCATransform3D:CATransform3DRotate(transform, 2 * M_PI / 2, 100, 1, 5)],
// [NSValue valueWithCATransform3D:CATransform3DRotate(transform, 3 * M_PI / 2, 100, 1, 100)],
// [NSValue valueWithCATransform3D:CATransform3DRotate(transform, 4 * M_PI / 2, 100, 1, 100)],
nil];
animation.duration = 5;
[container addAnimation:animation forKey:animation.keyPath];

您会注意到,在我的代码中, View 向您摆动没有任何影响,这就是我要寻找的。

谢谢,干杯

最佳答案

听起来您正在寻找放大/缩小动画,例如:

UIView *theStrigViewThing = ...

[UIView animateWithDuration: 0.2 delay: 0.0 options: UIViewAnimationOptionCurveEaseIn animations:^{
[theStrigViewThing setTransform: CGAffineTransformMakeScale(2.0f, 2.0f)];
} completion:^(BOOL finished) {
[UIView animateWithDuration: 0.2 delay: 0.0 options: UIViewAnimationOptionCurveEaseOut animations:^{
[theStrigViewThing setTransform: CGAffineTransformIdentity];
} completion:nil];
}];

关于ios - 有深度的摇摆动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com