- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用 Coreanimation 框架时,我可以将动画设置为重复。我想将一个按钮设置为“吸引注意力”模式,这应该让他稍微长大和缩小以引起用户的注意。
我已经通过完成 block 链接了增长和收缩动画。问题是我是否以及如何从第二个动画的完成 block 开始第一个动画。
我确实收到了以下确实有道理的警告。这个问题的优雅解决方案是什么?我不喜欢为这样的事情创建计时器。
Capturing 'scaleAnimation' strongly in this block is likely to lead to a retain cycle
- (void)attractAttention:(BOOL)flag{
_attractAttention = flag;
float resizeValue = 1.2f;
// Grow animation
POPSpringAnimation *scaleAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
scaleAnimation.fromValue = [NSValue valueWithCGSize:CGSizeMake(1.0f, 1.0f)];
scaleAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(resizeValue, resizeValue)];
scaleAnimation.completionBlock = ^(POPAnimation *anim, BOOL finished) {
// Grow animation done
POPSpringAnimation *scaleAnimationDown = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
scaleAnimationDown.fromValue = [NSValue valueWithCGSize:CGSizeMake(resizeValue, resizeValue)];
scaleAnimationDown.toValue = [NSValue valueWithCGSize:CGSizeMake(1.0f, 1.0f)];
scaleAnimationDown.completionBlock = ^(POPAnimation *anim, BOOL finished) {
// Shrink animation done
if (_attractAttention) {
[self.layer pop_addAnimation:scaleAnimation forKey:@"scaleUpAnimation"];
}
};
[self.layer pop_addAnimation:scaleAnimationDown forKey:@"scaleDownAnimation"];
};
[self.layer pop_addAnimation:scaleAnimation forKey:@"scaleUpAnimation"];
}
编辑:
我还尝试创建动画的弱引用。这消除了错误,但动画不再起作用:
__weak typeof(scaleAnimation) weakAnimation = scaleAnimation;
最佳答案
您还可以使用属性 autoreveres 和 repeatCount 来获得相同的结果,而无需使用 block 。它降低了复杂性:
POPSpringAnimation *scaleAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
scaleAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(0.5, 0.5)];
scaleAnimation.springBounciness = 0.f;
scaleAnimation.autoreverses = YES;
scaleAnimation.repeatCount=HUGE_VALF;
[layer pop_addAnimation:scaleAnimation forKey:@"scale"];
更好的是,如果你检查这个类https://github.com/facebook/pop/blob/master/pop/POPAnimation.h您会看到有一个 repeatForever 属性,因此您可以用它替换 repeatCount:
scaleAnimation.repeatForever=YES;
关于ios - 用流行创造一个无尽的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25954443/
我在创建/理解 promise 方面遇到了困难。我了解它们的优点并了解如何使用它们。创建自己的 promise 功能是困难的部分。简单地说,如何将此函数转换为与 Promise 一起使用: ret.g
这是我以前的question的跟进 假设我想用我的函数创建一个future,但是不想立即启动它(即我不想调用val f = Future { ... // my function}。 现在,我可以看到
使用以下函数表示从本地 html 文件生成 Web 存档 function TLessonConstructor2.CreateMHT( const FileName : string):boolea
我正在研究注册安全。 @RestController public class UserController { @Autowired private BCryptPasswordEncoder bC
在下面的示例代码中,我想创建一个 Item来自 Component 的对象: struct Component { }; struct Item { explicit Item(Compone
我有以下代码。我认为通过发布我可以创建一个热流,但是每个连接上的 uniqueId 都不同。我希望 create 方法执行一次,然后作为任意数量的订阅者的热流运行。 private Date
我有以下型号 type User struct { gorm.Model Languages []Language `gorm:"many2many:user_language
我想做的是用管道创建这种通信: 1 / \ 3 2 \ / 4 所以应该有3个 child 。 parent 给第一个和第二个 child
我正在将一些代码从 Win32 移植到使用锁定文件的 Linux。我用 open 为 Linux 做了一个实现,但我不确定如果文件在 Samba 共享上它是否会工作。我试过了,它似乎可以正常工作,但我
我是一名优秀的程序员,十分优秀!