为什么零UIView的CALayer.speed会使UIAlertController的按钮停止工作?

时间:2019-06-14 13:26:16

标签: ios swift calayer uialertcontroller

我有一个自定义活动指示器,该指示器是全屏UIView,其{strong> layer 属性中添加了CABasicTransformation用于轮换。当我在自定义layer.speed = 0方法中设置hideActivityIndicator()并显示警报时,我无法与其按钮或其他按钮进行交互,同时说在显示警报之前,我可以在表格视图中选择一个单元格设置layer.speed = 0后使用相同的控制器。需要明确的是,这是产生效果的唯一代码行。如果我将其注释掉,则警报效果很好。

1 个答案:

答案 0 :(得分:1)

默认情况下,动画会导致UI元素停止接受“用户交互”(轻击)。

我的猜测是,当您将动画速度设置为0时,动画将始终运行,永不结束,并且用户交互被禁用。

您也许可以在按钮上设置allowUserInteraction标志,但是allowUserInteraction是UIView.AnimationOptions的属性,所以我不确定您该怎么做。

您可以尝试在视图的transform属性上使用UIView动画,而不是在图层上使用CABasicAnimation。然后,您可以在设置动画时使用allowUserInteraction属性。

(请注意,在UIView动画的幕后实际上创建了CAAnimations,并且将图层的动画速度设置为0仍将冻结动画。)