2016-03-15 88 views
0
的背景图片

代码:试图改变UISwitch

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") 
     } 
    } 

我想,当它被改变以改变UISwitch的背景图像。 似乎没有设置背景图片。

我的代码有什么问题?

回答

2

onImageoffImage属性有因为根据苹果文档

尝试iOS7创建一个UIButton,并根据selected:Bool财产上的这个按钮设置图像,使其像一个开关

没有影响当你按下按钮时,使sender.selected = !sender.selected然后刷新图像。你将有一个自定义开关!

2
@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")]; 
} 

example

example

斯威夫特:

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") 
    } 
} 
+0

最大,你说你把图像下方的开关?所以图像与普通开关的尺寸相同? –

+0

@Mark Moeykens yep – Max

+0

是的,这似乎工作。使背景的高度为31,宽度为51,放在开关后面。似乎工作正常。希望有一个更优雅的方式。 –