我必须在UIButton上切换两个图像(带动画),但是我的标签隐藏在UIButton上的图像后面。因此我添加了UILabel的子视图,但也没有显示。我甚至试图将子视图放在前面但这也行不通。
let options = [option_1, option_2, option_6]
var imageArray = [UIImage]()
imageArray.append( UIImage(named: "light_button.png" )! )
imageArray.append( UIImage(named: "dark_button.png" )! )
let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.option_1.frame.width, height: self.option_1.frame.width))
label.text = "HEY"
label.font = UIFont.systemFont(ofSize: 18)
option_1.addSubview(label)
option_1.bringSubview(toFront: label)
for option in options{
option?.setImage( UIImage(named: "green_button.png")!, for: .normal)
option?.imageView!.animationImages = imageArray
option?.imageView!.animationImages = imageArray
option?.setTitle("TEST TEXT", for: .normal) //Even this don't work
option?.imageView!.animationDuration = 2.35
option?.imageView!.startAnimating()
}
怎么了?
答案 0 :(得分:3)
我会尝试给你一个简单的解决方案。 单击按钮并从故事板本身调整其选定和默认状态。例如,选择按钮的默认状态,并从IBInspector中为其指定标题和图像。然后对选定状态重复相同的过程以及选择状态配置。
然后最后您可以管理您的代码,如下所示:
class ViewController: UIViewController {
@IBOutlet weak var buttonObj: UIButton!
var stop = false
var timer:Timer?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// toggleButtons()
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.toggleButtons), userInfo: nil, repeats: true);
}
func toggleButtons(){
if stop{
timer?.invalidate()
}else{
buttonObj.toggleSelection()
}
}
@IBAction func btnClicked(_ sender: Any) {
//Once you click the button stop will become true and hence your timer will invalidate
stop = true
}
}
//MARK:-******** UIButtonExtension ***********
extension UIButton {
func toggleSelection() {
self.selected = self.selected ? false : true
}
}
您还可以根据需要在各种动画类型中进行选择。
答案 1 :(得分:0)
您是否尝试将图像设置为背景图像?
选项?。setBackgroundImage(UIImage(名称:“green_button.png”)!, for:。normal)
答案 2 :(得分:0)
您可以将UIButton的背景图像设置为正常和选定状态,然后在状态之间切换时设置动画(切换选中但未点击按钮选择)