Swift动画不粘[重复]

Posted

技术标签:

【中文标题】Swift动画不粘[重复]【英文标题】:Swift animation not sticking [duplicate] 【发布时间】:2014-10-18 17:54:00 【问题描述】:

单击时我有一个按钮我使用以下代码将带有动画的 imageView 移动到屏幕上的另一个位置:

@IBOutlet var CurrentPlayerTotal: UILabel!
@IBOutlet var Player1: UIImageView!

UIImageView.animateWithDuration(1.0, animations: 
   self.Player1.frame = CGRect(x: 16, y: 178, width: 250, height: 350)
)

图像移动良好。

我有另一个按钮可以更新屏幕上的标签。

@IBAction func Sub1(sender: AnyObject) 
    currentTotal -= 1
    CurrentPlayerTotal.text = "\(currentTotal )"

当我单击此按钮时,图像会返回到原始位置。为什么会这样?

这里有更完整的代码sn-p

var currentTotal : Int = 0
var currentPlayer : Int = 1
var numberOfPlayers : Int = 6

@IBOutlet var CurrentPlayerTotal: UILabel!
@IBOutlet var CurrentPlayerNme: UILabel!
@IBOutlet var Player1: UIImageView!

override func viewDidAppear(animated: Bool) 
    UIImageView.animateWithDuration(1, delay: 1.0, options: .CurveEaseOut, animations: 
        var player = self.Player1.frame
        player = CGRect(x: 16, y: 178, width: 250, height: 350)

        self.Player1.frame = player

        , completion:  finished in
            println("done")
    )


override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


// SUBTRACT
@IBAction func Sub1(sender: AnyObject) 
    currentTotal -= 1
    CurrentPlayerTotal.text = "\(currentTotal )"

应用程序开始将图像移动到正确的位置。当我点击绑定到 Sub1 函数的按钮时,图像会弹回到原来的位置。

【问题讨论】:

感谢您指出答案。这为我提供了解决方案 【参考方案1】:

如果第一个可行就试试,否则试试第二个,肯定会成功。

    self.player1.layoutIfNeeded()self.player1 setNeedsDisplay()

    为 uiimageview 制作 NSLayoutConstraint 的出口,并根据您的需要加/减它,而不是改变 uimageview 的框架。

【讨论】:

我是否在动画之后放置选项#1?选项 #2 我不明白。 option#1 你可以在动画块中或之后使用 option#2 为 uiimageview 创建一个左约束,然后创建这个约束的出口,希望你明白我的意思。 解决了你的问题吗? 不,还没有,如果可能的话,我想使用动画。 在上面添加了更多有问题的代码。

以上是关于Swift动画不粘[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中重复 alpha 动画

Swift:链式 UIView 动画永远重复? Obj-C 代码不可移植

Swift:重复的连续 CABasicAnimations

重复动画重新启动按钮的位置

(Swift)淡入淡出标签[重复]

如何让 CATransaction 无限重复? - 斯威夫特