Change color of UISwitch in “off” state

前端 未结 18 2740
忘掉有多难
忘掉有多难 2020-11-30 20:53

I\'ve learned that we can change the UISwitch button appearance in its \"on\" state, but is it also possible to change the color of the UISwitch in the \"off\" state?

18条回答
  •  死守一世寂寞
    2020-11-30 21:48

    The Best way to manage background color & size of UISwitch

    For now it's Swift 2.3 code

    import Foundation
    import UIKit
    
    @IBDesignable
    class UICustomSwitch : UISwitch {
    
        @IBInspectable var OnColor : UIColor! = UIColor.blueColor()
        @IBInspectable var OffColor : UIColor! = UIColor.grayColor()
        @IBInspectable var Scale : CGFloat! = 1.0
    
        override init(frame: CGRect) {
            super.init(frame: frame)
            self.setUpCustomUserInterface()
        }
    
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            self.setUpCustomUserInterface()
        }
    
    
        func setUpCustomUserInterface() {
    
            //clip the background color
            self.layer.cornerRadius = 16
            self.layer.masksToBounds = true
    
            //Scale down to make it smaller in look
            self.transform = CGAffineTransformMakeScale(self.Scale, self.Scale);
    
            //add target to get user interation to update user-interface accordingly
            self.addTarget(self, action: #selector(UICustomSwitch.updateUI), forControlEvents: UIControlEvents.ValueChanged)
    
            //set onTintColor : is necessary to make it colored
            self.onTintColor = self.OnColor
    
            //setup to initial state
            self.updateUI()
        }
    
        //to track programatic update
        override func setOn(on: Bool, animated: Bool) {
            super.setOn(on, animated: true)
            updateUI()
        }
    
        //Update user-interface according to on/off state
        func updateUI() {
            if self.on == true {
                self.backgroundColor = self.OnColor
            }
            else {
                self.backgroundColor = self.OffColor
            }
        }
    }
    

提交回复
热议问题