作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我有一个弹出横幅,每次用户从服务器收到通知时都会跳转,这个弹出窗口看起来像一个带有字符串的标志,附加到屏幕顶部(不是代码字符串,哈哈)。
我正在尝试实现摆动动画,但不是左右摆动!来回,所以底部 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];
最佳答案
听起来您正在寻找放大/缩小动画,例如:
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/
我是一名优秀的程序员,十分优秀!