我有一组按钮,希望通过触摸时淡入淡出不同的高亮图像。下面的技术工作正常,但仅在同一按钮上发生第二次触摸事件之后才有效。第一次触摸会在整个按钮上产生标准的“褪色深灰色”。从那时起,将来的触摸就可以通过高亮显示的图片正确淡入淡出。
我只在模拟器中测试过,这是他发出的吗?如果没有,如何在每次触摸时产生正确的突出显示状态?谢谢!
isMatch
答案 0 :(得分:2)
最初在设置UIButton
属性时或在viewDidLoad()
中通过编写以下代码来设置按钮的突出显示图像。
yourButton.setImage(UIImage(named: "My Image.png"), for: UIControl.State.highlighted)
无法使用您的代码的原因
按钮操作@IBAction func someButton(_ sender: UIButton)
始终仅在用户手指松开时调用,因此,此时UIButton首次没有具有突出显示状态的图像。稍后,通过动画设置图像,从而使其动画效果完美。
修改
您可以通过创建如下所示的单独函数,通过Firebase调用或其他事件操作来转换UIButton
。使用UIButton
的{{1}}来访问按钮。
outlet
因此,您可以随时随地调用@IBOutlet weak var someButton: UIButton!
func buttonTransition() {
UIView.transition(with: sender, duration: 0.3, options: .transitionCrossDissolve, animations: {
someButton.setImage(UIImage(named: "My Image.png"), for: UIControl.State.highlighted)
}, completion: nil)
}
函数。
答案 1 :(得分:0)
它在第二次单击时有效,因为您已在按钮单击动作中编写了转换代码。只需在viewDidLoad或viewWillApear中编写该代码,它将在第一次单击之前起作用,并将在按钮上设置过渡。在viewDidLoad中编写如下内容:
override func viewDidLoad() {
super.viewDidLoad()
UIView.transition(with: button, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.button.setImage(UIImage(named: "image.png"), for: UIControl.State.highlighted)
}, completion: nil)
}
此处的按钮是在情节提要中创建的按钮的出口变量。