Ios 停止无限约束动画

Ios 停止无限约束动画,ios,cocoa-touch,autolayout,Ios,Cocoa Touch,Autolayout,我一直在努力停止/删除无限约束动画启动后。基本上,我有一个长方体,它与主视图的高度相等,乘数为0.5。通过UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat将乘数更改为0.8并返回到0.5,长方体应该会增长和收缩。由于乘法器是只读的,所以设置此动画的唯一方法是删除约束并使用乘法器将其添加回。长方体的动画效果很好,但是使用经典的方法停止UIView动画时,停止方法似乎根本不起作用 如果我为box.transofrm=CGA

我一直在努力停止/删除无限约束动画启动后。基本上,我有一个长方体,它与主视图的高度相等,乘数为0.5。通过UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat将乘数更改为0.8并返回到0.5,长方体应该会增长和收缩。由于乘法器是只读的,所以设置此动画的唯一方法是删除约束并使用乘法器将其添加回。长方体的动画效果很好,但是使用经典的方法停止UIView动画时,停止方法似乎根本不起作用

如果我为box.transofrm=CGAffineTransformMakeScale(1.0f,0.8f)设置动画,我可以停止动画,但不建议在启用自动布局时这样做,而不是为约束本身设置动画

这是我的密码

// wired equal height constraint between box and view with multiplier 0.5
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *boxEqualHeightConstraint;


我发现了什么是动画不会停止的原因。我的self.box(是一个UIButton)包含一个图像

在removeAllAnimations之后,仍然处于动画状态的仅仅是盒子内部的图像,而不是盒子本身

因此,要阻止它,请执行以下操作:

[self.box.imageView.layer removeAllAnimations];

[self.box.layer removeAllAnimations]
适合我。您确定正在调用
stopAnimations
吗?@rdelmar是的,我确定。我得到的唯一效果是长方体坐标发生变化,长方体不再围绕视图中心设置动画,但仍在设置动画(增长>收缩)。[self.box animationKeys]返回bounds.size的键,该键被removeAllAnimations删除,但由于某种原因,这只会更改框的位置。删除
[self.view layoutifneed]在动画块之前,除了它工作之外,停止会突然跳跃,但这是另一个问题。您可能应该考虑更改优先级,而不是一直添加和删除约束。
[self.box.imageView.layer removeAllAnimations];