UIButton第一次被按下时没有动画



所以我有一个按钮,按下时,将动画/取消隐藏其他 3 个按钮,反之亦然。动画每次都运行良好,但第一次被按下。不知道为什么它第一次不工作,因为它突然停止工作......

编辑:我将其缩小到viewDidLoad功能,似乎它没有将按钮设置为加载时主按钮的位置。 不知道如何解决它。

这是代码:

class MainMenuViewController: UIViewController {
@IBOutlet weak var more: UIButton!
@IBOutlet weak var addButton: UIButton!
@IBOutlet weak var addItemButton: UIButton!
@IBOutlet weak var settingsButton: UIButton!
var addButtonPoints: CGPoint!
var addItemButtonPoints: CGPoint!
var settingsButtonPoints: CGPoint!
var moreButtonPressed: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
addButtonPoints = addButton.center
addItemButtonPoints = addItemButton.center
settingsButtonPoints = settingsButton.center
addButton.center = more.center // moving button towards the center of the main button
addItemButton.center = more.center
settingsButton.center = more.center
}
@IBAction func mainMenuTapped(_ sender: Any) {
if moreButtonPressed == true { // collapse
UIView.animate(withDuration: 0.3, animations: {
self.addItemButton.alpha = 0 // hiding the buttons
self.settingsButton.alpha = 0
self.addButton.alpha = 0
self.addItemButton.center = self.more.center // moving buttons
self.settingsButton.center = self.more.center
self.addButton.center = self.more.center
})
moreButtonPressed = false
}
else { // expand
UIView.animate(withDuration: 0.3, animations: {
self.addItemButton.alpha = 1
self.settingsButton.alpha = 1
self.addButton.alpha = 1
self.addItemButton.center = self.addItemButtonPoints
self.settingsButton.center = self.settingsButtonPoints
self.addButton.center = self.addButtonPoints
})
moreButtonPressed = true
}
}

按钮的外观

左边是应用程序启动时的样子,右边是它在故事板中的样子(通常左边 3 个按钮是隐藏的,但我取消隐藏它以更好地显示它( 如代码所示,viewDidLoad 将按钮设置为主菜单的位置

因为你的逻辑不准确

当用户首次点击您的按钮时,函数会触发并进入else案例。因为moreButtonPressed一开始就false

它将按钮的alpha设置为1,并且您看不到任何更改。因为所有的alpha都已经1了.


您可以更改moreButtonPressed更有意义的替代项(如isHidden(的名称,并将其用作如下所示的状态,而不是该解决方案:

var isHidden: Bool = false // Button not hidden at the beginning
@IBAction func mainMenuTapped(_ sender: Any) {
if isHidden {
UIView.animate(withDuration: 0.3, animations: {
self.addButton.alpha = 1
})
isHidden = false // We set alpha to 1 and it is visible now.
}
else {
UIView.animate(withDuration: 0.3, animations: {
self.addButton.alpha = 0
})
isHidden = true // We set alpha to 0
}
}

最新更新