[英]UIButton image in Swift does not change colors even after a function is created
我正在使用Xcode 8和Swift 3,并尝试创建一个单击按钮时会更改颜色的按钮。
该按钮为黑色,但是当我单击时应变为蓝色。 该按钮是存钱罐的图像。
我继续添加了黑色猪和蓝色猪的图像,分别命名为money_off
和money_on
。
我现在正在编写代码,以使单击后的黑色图像变为蓝色。 代码本身未显示任何错误,但模拟未成功。 单击黑色的存钱罐没有任何作用。
有人知道可能会发生什么吗?
import UIKit
class SecondViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var label: UILabel!
let step: Float = 1
@IBOutlet weak var moneybutton: UIButton!
@IBOutlet var itemTextField: UITextField!
@IBAction func moneyClicked(_ sender: UIButton) {
if sender.currentImage === #imageLiteral(resourceName: "money_off"){
sender.setImage(#imageLiteral(resourceName: "money_on"), for: .normal)}
else {
sender.setImage(#imageLiteral(resourceName: "money_off"), for: .normal)
}
}
}
尝试这个-
class SecondViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var moneybutton: UIButton!
func viewDidLoad() {
self.moneybutton.setImage(UIImage(named:"money_on"), for: .selected)
self.moneybutton.setImage(UIImage(named:"money_off"), for: .normal)
}
@IBAction func moneyClicked(_ sender: UIButton) {
self.moneybutton.isSelected = !self.moneybutton.isSelected
}
}
您最好不要依赖某些#imageLiteral
的返回值,而要保持状态,如moneyOff
的示例代码中的moneyOff
。
(对不起,没有可用的Xcode,因此代码可能包含一些语法错误,但是您会明白的):
class SecondViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var label: UILabel!
let step: Float = 1
var moneyOff = true
@IBOutlet weak var moneybutton: UIButton!
@IBOutlet var itemTextField: UITextField!
@IBAction func moneyClicked(_ sender: UIButton) {
if moneyOff {
sender.setImage(#imageLiteral(resourceName: "money_on"), for: .normal)}
else {
sender.setImage(#imageLiteral(resourceName: "money_off"), for: .normal)
}
moneyOff = !moneyOff // toggle state
}
}
下面的代码为我工作:
class ViewController: UIViewController {
@IBOutlet weak var moneybutton: UIButton!
func viewDidLoad()
{
moneybutton.setImage(UIImage(named:"money_on"), for: .selected)
moneybutton.setImage(UIImage(named:"money_off"), for: .normal)
}
@IBAction func moneyClicked(_ sender: UIButton)
{
if self.btn.isSelected
{
self.moneybutton.isSelected = false
}
else{
self.moneybutton.isSelected = true
}
}
我猜问题是故事板和视图控制器之间的连接。
我尝试以编程方式添加按钮,并且可以正常工作。
import UIKit
import AVFoundation
class ViewController: UIViewController {
lazy var btn: UIButton = {
let btn = UIButton()
btn.translatesAutoresizingMaskIntoConstraints = false
btn.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleClicked)))
btn.isUserInteractionEnabled = true
btn.setImage(UIImage(named: "money_off"), for: .normal)
return btn
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .green
view.addSubview(btn)
btn.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
btn.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 50).isActive = true
btn.widthAnchor.constraint(equalToConstant: 50).isActive = true
btn.heightAnchor.constraint(equalToConstant: 10).isActive = true
}
func handleClicked() {
if btn.currentImage == UIImage(named: "money_off") {
btn.setImage(UIImage(named: "money_on"), for: .normal)
} else {
btn.setImage(UIImage(named: "money_off"), for: .normal)
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.