Ios 在XIB中设置按钮动画,以编程方式移动
我想在XIB中设置一个按钮的动画,以便在视图加载时向上移动。使用下面的代码,按钮会随着动画移动,但它会从新位置移回在XIB中设置的原始位置 我觉得我错过了一些简单的东西,但我一直试图用不同的方式来处理这个问题,但都没有成功。这是因为我正在用自动布局在XIB中设置动画吗?欢迎提出任何意见Ios 在XIB中设置按钮动画,以编程方式移动,ios,swift,uiviewanimation,Ios,Swift,Uiviewanimation,我想在XIB中设置一个按钮的动画,以便在视图加载时向上移动。使用下面的代码,按钮会随着动画移动,但它会从新位置移回在XIB中设置的原始位置 我觉得我错过了一些简单的东西,但我一直试图用不同的方式来处理这个问题,但都没有成功。这是因为我正在用自动布局在XIB中设置动画吗?欢迎提出任何意见 // Relevant Part of XIB class @IBDesignable class BottomNagivationBar: UIView { var view:UIView!
// 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)
})
}
这是因为我正在用自动布局在XIB中设置动画吗
对。动画和自动布局是敌人。设置位置动画,然后布局出现并应用约束,这些约束仍然指定按钮开始的位置-因此它会向后跳如果你想使用自动布局,你可能想考虑使用CGAFAFIN变换动画位置。加载视图后,可以使用以下工具设置动画:
UIView.animate(withDuration: 2, delay: 1, options: .allowUserInteraction, animations: {
self.exploreIcon.transform = CGAffineTransform(translationX: 0, y: 10.0)
})
如上所述,您还需要将动画移出
viewDidLoad
,并移到另一个功能中,例如viewwillbeen
viewDidLoad
对于动画来说太早了,因为您的应用程序可能仍在启动/加载视图,并且您的动画可能不可见。是否在此视图上启用了自动布局?因为如果是这样,将覆盖您手动对帧所做的任何更改。也不要在viewDidLoad
中启动动画。那太早了。在override func viewdide(uu动画:Bool){}中添加该代码