iOS核心动画-阴影

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS核心动画-阴影相关的知识,希望对你有一定的参考价值。

参考技术A ios中常见的特性中有有阴影,下面我将详细阐述一下关于视图阴影的故事
iOS中阴影的属性是 shadowOpacity 它的默认值是0,只要设置一个大于0的值就会在视图的上面出现阴影的效果,但它的浮点值在0~1之间.

但你会发现其阴影的特点是上面阴影效果最明显,左右也有阴影效果,但是在下面是没有的阴影的,因为系统在设置阴影效果时设置了默认的阴影偏移量,你可以通过另一个属性 shadowOffset 来改变阴影的偏移效果,它的类型值是CGSize类型(当 shadowOffset 的值设为 CGSizeMake(0, 0) 时,四周就都会出现阴影)

改变阴影效果的属性还有一个是 shadowRadius , 它的效果是阴影的半径,其值越大,阴影效果就越明显.

但是当我们在给 imageView 添加阴影效果时也会有效果,但是在当我们在设置视图的圆角时,我们会发现阴影效果就消失了,这很让人头疼,下面我将提供一个解决办法,其实很简单,只要在 ImageView 下面铺一个 view 就可以解决问题了,但要注意的是下面的 view 不要给颜色,要一个透明view,同时设置阴影效果,并且不设置圆角, ImageView 不用设置阴影,但要设置圆角,这样就可以解决问题了.

有没有办法在 iOS 中检测正在运行的动画?

【中文标题】有没有办法在 iOS 中检测正在运行的动画?【英文标题】:Is there a way to detect a running animation in iOS? 【发布时间】:2012-01-14 23:23:36 【问题描述】:

我正在尝试寻找一种方法来检测视图是否正在动画。

举个例子:我在视图层上应用了阴影,并指定了 shadowPath 以提高性能。当视图被调整大小时,阴影应该随之动画。我可以观察视图的框架,并相应地更改图层的 shadowPath。但是当视图调整大小时,阴影会向前跳跃,因为更改没有动画。

我知道如何使用 CABasicAnimation 为 shadowPath 设置动画,但我需要知道正在进行的动画的属性,以便我也可以将它们应用到我的动画中(主要是:持续时间、缓动)。

这是一个框架类型的组件,所以我不能假设我事先知道持续时间和缓动属性。

有没有办法在观察帧时检测开始/运行动画?

【问题讨论】:

【参考方案1】:

您可以通过调用来检索附加到特定视图层的所有动画,知道它是关键

[yourView.layer animationForKey:@"key"]

要获得所有有动画的键,请调用

NSArray* keys = [yourView.layer animationKeys];

【讨论】:

【参考方案2】:

我认为最好的做法应该是......

UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.7];
[UIView setAnimationBeginsFromCurrentState:YES];

.....your code
// Set animation did stop selector before committing the animations

[UIView setAnimationDidStopSelector:@selector(animationFinished:)];

[UIView commitAnimations];

【讨论】:

以上是关于iOS核心动画-阴影的主要内容,如果未能解决你的问题,请参考以下文章

iOS核心动画高级技巧 - 8

iOS_40_核心动画

ios开发核心动画七:核心动画与UIView动画的区别

iOS核心动画Core Animation

ios核心动画之专场动画

iOS核心动画以及UIView动画的介绍