动画按钮图像

时间:2017-09-28 07:02:37

标签: ios swift swift3 uibutton uilabel

我必须在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()   
}

怎么了?

3 个答案:

答案 0 :(得分:3)

我会尝试给你一个简单的解决方案。 单击按钮并从故事板本身调整其选定和默认状态。例如,选择按钮的默认状态,并从IBInspector中为其指定标题和图像。然后对选定状态重复相同的过程以及选择状态配置。 enter image description here

然后您还可以管理按钮的图像和标题,如图所示。enter image description here

然后最后您可以管理您的代码,如下所示:

       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的背景图像设置为正常和选定状态,然后在状态之间切换时设置动画(切换选中但未点击按钮选择)