如何进行 uibutton 缩小然后交叉模糊?
Posted
技术标签:
【中文标题】如何进行 uibutton 缩小然后交叉模糊?【英文标题】:How to make a uibutton zoomout and then crossblur? 【发布时间】:2015-04-29 10:29:32 【问题描述】:我已经实现了一个 UIButton 动画,现在它可以缩放,但我也想在 UIButton 消失时交叉淡入淡出。
这是我的按钮动画示例代码。
(void)centerButtonAnimation
CAKeyframeAnimation *centerZoom = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
centerZoom.duration = 1.5f;
centerZoom.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.5, 1.5, 1.5)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(4, 4, 4)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(5, 5, 5)]];
centerZoom.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
centerButton.transform = CGAffineTransformMakeScale(5, 5);
[centerButton.layer addAnimation:centerZoom forKey:@"buttonScale"];
[centerButton setUserInteractionEnabled:NO];
【问题讨论】:
交叉淡入淡出方法在这里:***.com/questions/1550206/…。不确定这是否是您所说的交叉淡入淡出的意思?也在这里用于特定的 UIButton 图像交叉淡入淡出(不是答案,而是它下面的 +13):***.com/questions/16801948/… 我想你同时添加两个动画,或者如果你想链接它们你必须实现代理并在缩放完成时添加交叉淡入淡出。 感谢您的链接,我一定会实现它们并查看.. 您能否发布与我的示例代码相同的代码?我的意思是实现委托并在缩放完成中添加交叉淡入淡出?? 发布的答案是我认为基于您的代码应该大致看起来的样子。 【参考方案1】:要链接动画,您可以将您的类设置为动画的代理。
@property CAKeyframeAnimation *centerZoom;
- (void) centerButtonAnimation
self.centerZoom = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
// Set the delegate to this instance.
centerZoom.delegate=self;
centerZoom.duration = 1.5f;
centerZoom.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.5, 1.5, 1.5)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(4, 4, 4)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(5, 5, 5)]];
centerZoom.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
centerButton.transform = CGAffineTransformMakeScale(5, 5);
[centerButton.layer addAnimation:centerZoom forKey:@"buttonScale"];
[centerButton setUserInteractionEnabled:NO];
- (void) crossFadeAnimation
// Insert animation code for cross fade.
然后实现委托函数检测动画结束。如果缩放结束,则开始交叉淡入淡出。
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
if ((theAnimation == self.centerZoom) && flag)
[self crossFadeAnimation];
【讨论】:
非常感谢。我希望尽快实施它以上是关于如何进行 uibutton 缩小然后交叉模糊?的主要内容,如果未能解决你的问题,请参考以下文章