我想为 XIB 中的按钮设置动画,使其在 View 加载时向上移动。使用下面的代码,按钮会随着动画移动,但它会从新位置 BACK 移动到 XIB 中设置的原始位置。
感觉好像我遗漏了一些简单的东西,但几个小时以来我一直在尝试采用这种不同的方式,但都没有成功。这是因为我正在使用自动布局为 XIB 中设置的内容设置动画吗?任何想法表示赞赏。
// Relevant Part of XIB class
@IBDesignable class BottomNagivationBar: UIView {
var view:UIView!
//Buttons Outlet
@IBOutlet weak var exploreIcon: UIButton!
}
override func viewDidLoad() {
super.viewDidLoad()
UIView.animate(withDuration: 2, delay: 1, options: .allowUserInteraction, animations: {
let position: CGFloat = 10
let x:CGFloat = self.BottomNavigationBar.exploreIcon.frame.origin.x
let y:CGFloat = self.BottomNavigationBar.exploreIcon.frame.origin.y + position
self.BottomNavigationBar.exploreIcon.frame = CGRect(x: x, y: y, width: self.BottomNavigationBar.exploreIcon.frame.width, height: self.BottomNavigationBar.exploreIcon.frame.height)
})
}
最佳答案
Is this because I am animating something set up in a XIB with auto layout?
是的。动画和自动布局是敌人。您为位置设置动画,然后出现布局并应用您的约束,它仍然指定按钮开始的位置 - 所以它会跳回。
关于ios - XIB 中的动画按钮以编程方式移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52397328/