首页 > 解决方案 > 动画按钮位置更改Swift

问题描述

3 个按钮 目前我正在尝试通过点击第三个按钮来更改 2 个按钮的位置。

`@IBAction func addButton(_ sender: UIButton) {
        if checked {
            UIView.animate(withDuration: 0.3) {
                self.taskButton.center = self.addButton.center
                self.habitButton.center = self.addButton.center
                sender.transform = CGAffineTransform.identity
            }
            checked = false
        } else {
           // sender.setImage(#imageLiteral(resourceName: "CancelButton"), for: .normal)
            UIView.animate(withDuration: 0.3) {
                sender.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 4.0)
                self.taskButton.center = self.taskButtonCenter
                self.habitButton.center = self.habitButtonCenter
            }
            checked = true
    }
        }`

仅当我不使用约束时,此方法才有效。我不知道为什么,但如果我用它在不同的设备上运行,按钮就会移动到一个疯狂的位置。请帮我找到更好的解决方案!谢谢 PS:我是一个初学者,我仍在努力理解约束!

标签: iosswiftanimationconstraints

解决方案


约束也可以是出口,如果您使用自动布局,您应该以这种方式将它们用于动画。例如,我假设您使用topMarginleftMargin约束来定位您的按钮。

您用于动画更改的假设代码如下所示:

topMargin.constant += 50
leftMargin.constant += 50

UIView.animate(withDuration: 0.3) {
    view.layoutIfNeeded()
}

上面的代码会将这些约束放置的对象向右和向下移动 50 个点(实际上是在任何地方,取决于您放置约束的方式)。


推荐阅读