Reputation: 201
Code:
let switchTerms = UISwitch(frame:CGRectMake(XPos, YPos, Width, Height))
switchTerms.addTarget(self, action: "switchTermsAction:", forControlEvents: .ValueChanged)
switchTerms.onImage = UIImage(named:"SIGN-UP-toggle-Active.png")
scrollSignUp!.addSubview(switchTerms);
func switchTermsAction(sender:UISwitch){
if sender.on{
sender.onImage = UIImage(named:"SIGN-UP-toggle-Active.png")
}
else{
sender.offImage = UIImage(named:"SIGN-UP-toggle-DeActive.png")
}
}
I tried to change background image of UISwitch when it is changed. Seems background image is not set.
What is wrong with my code?
Upvotes: 1
Views: 2993
Reputation: 646
@property (weak, nonatomic) IBOutlet UIImageView *genderSwitchBackgroundImageView;
@property (weak, nonatomic) IBOutlet UISwitch *genderSwitch;
...
- (void)viewDidLoad {
[super viewDidLoad];
self.genderSwitch.onTintColor = [UIColor clearColor];
self.genderSwitch.tintColor = [UIColor clearColor];
[self genderSwitchValueChanged];
}
- (IBAction)genderSwitchValueChanged {
self.genderSwitchBackgroundImageView.image = [UIImage imageNamed:(self.genderSwitch.isOn ? @"toggle_male" : @"toggle_female")];
}
Swift:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var genderSwitchBackgroundImageView: UIImageView!
@IBOutlet weak var genderSwitch: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
genderSwitch.tintColor = UIColor.clearColor()
genderSwitch.onTintColor = UIColor.clearColor()
genderSwitchValueChanged()
}
@IBAction func genderSwitchValueChanged() {
genderSwitchBackgroundImageView.image = UIImage(named:genderSwitch.on ? "toggle_male" : "toggle_female")
}
}
Upvotes: 4
Reputation: 1542
onImage
and offImage
properties have no effect since iOS7 according to Apple docs
Try to create a UIButton, and set an image on this button according to the selected:Bool
property to make it behave like a Switch
When you press the button, make sender.selected = !sender.selected
and then refresh the image. You will have a custom switch !
Upvotes: 2