2016-03-15 3 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

onImage и offImage свойства не имеют никакого эффекта, так как iOS7 в соответствии с Apple, документы

Try создать 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

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

Макс, ты говоришь, что поместить изображение НИЖЕ коммутаторе? Значит, изображение такого же размера, как и обычный переключатель? –

+0

@Mark Moeykens yep – Max

+0

Да, это похоже на работу. Сделали фоны с высотой 31 и шириной 51, поставленными как за переключатель. Кажется, хорошо работает. Желание было более элегантным способом. –

Смежные вопросы