.Repeat .AutoReverse 不起作用

Posted

技术标签:

【中文标题】.Repeat .AutoReverse 不起作用【英文标题】:.Repeat .AutoReverse not working 【发布时间】:2016-01-31 14:16:09 【问题描述】:

我正在使用动画来在单击按钮时对其进行变换,我能够使按钮变大。但是,我认为通过使用 .Repeat 和 .Autoreverse,按钮会回到正常状态。 (比例 1.0)但事实并非如此!也许我误解了我阅读的关于.AnimateWithDuration 的教程和问题??

这是我正在使用的代码:

 let button = sender as! UIButton

    UIView.animateWithDuration(1.0, delay: 0.6,
        options: [.Repeat, .Autoreverse, .AllowUserInteraction],
        animations:
        button.transform = CGAffineTransformMakeScale(1.2, 1.2)
        , completion: nil)

在另一个问题中,我看到可以通过添加 .AllowUserInteraction 来解决问题,但事实并非如此。

我不知道它是否重要,但这段代码包含在一个触摸事件中。

 @IBAction func addButtonClicked(sender: AnyObject) 

这里会发生什么?这不是你应该如何反转动画吗?

【问题讨论】:

使用 .Repeat 和 .Autoreverse 按钮​​将“跳动”。该代码在测试代码中按预期工作。 @IBAction func pushButton(sender: AnyObject) let btt = sender as! UIButton UIView.animateWithDuration(1.0, delay: 0.6, options: [.Repeat, .Autoreverse, .AllowUserInteraction], animations: btt.transform = CGAffineTransformMakeScale(1.2, 1.2) , completion: nil) 再次检查按钮是否链接到此函数,使用断点确保其调用它。 @UlyssesR 它正在调用,因为当我单击它时按钮确实变大了,但它并没有恢复到正常状态 【参考方案1】:

在动画结束时,您应该重置对象的大小。.autoreverse 只是“在视觉上反转”,但不会改变实际的对象大小。

试试这个。

@IBAction func prss(sender: AnyObject) 
    let btt = sender as! UIButton

    UIView.animate(withDuration: 1.0, delay: 0.6, options: [.autoreverse, .allowUserInteraction], animations:
        btt.transform = CGAffineTransform(scaleX: 5.0, y: 5.0)
    , completion:  (finished) in
        btt.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
    )

【讨论】:

你是对的。我不得不使用完成来重置按钮。谢谢! “.Autoreverse 只是“视觉上反转”,但不会改变实际对象的大小。”。这帮助我解决了动画问题。谢谢!

以上是关于.Repeat .AutoReverse 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ng-repeat 上的 Angularjs OrderBy 不起作用

ng-repeat 中的 select2 不起作用。看片段

Jquery md-timepicker 在 ng-repeat 中不起作用

ng-repeat 中的角度验证不起作用

Angularjs data-ng-repeat 不起作用

在 ng-repeat 中向 ng-click 函数添加参数似乎不起作用