Как настроить кнопку UISwitch в iphone? - PullRequest
6 голосов
/ 23 февраля 2011

Я создал UISwitch, используя этот код ...

UISwitch *switch = [[UISwitch alloc]initWithFrame:CGRectMake(110, 230, 60, 60)];
[window addSubview:switchView];
[switchView release];

Созданная кнопка будет ....

enter image description here

Свойства по умолчанию:,

  1. Содержит состояния " ON " & " OFF "
  2. Кнопка выключения white &кнопка ON имеет цвет синий цвет

Я хочу создать настраиваемый переключатель, чтобы изменить цвет фона и текст в переключателе.Является ли это возможным?Пожалуйста, объясните подробно.

Заранее спасибо,

Раджкант

Ответы [ 2 ]

20 голосов
/ 23 февраля 2011

Вы не можете изменять элемент управления UISwitch до тех пор, пока не напишите свой собственный элемент управления,

Но пока лучше всего использовать UISegmentControl и обрабатывать событие для него, чтобы переключать изображения on.png и off.png..

UISegmentedControl* switchView=[[UISegmentedControl alloc] initWithItems:[[[NSMutableArray alloc] initWithObjects:@"On",@"Off",nil] autorelease]];
    [switchView setFrame:CGRectMake(20,365,140,28)];
    switchView.selectedSegmentIndex=0;
    switchView.segmentedControlStyle=UISegmentedControlStyleBar;
    [switchView setImage:[UIImage imageNamed:@"onSelected.png"] forSegmentAtIndex:0];
    [switchView setImage:[UIImage imageNamed:@"off.png"] forSegmentAtIndex:1];
    [switchView addTarget:self action:@selector(checkOnOffState:) forControlEvents:UIControlEventValueChanged];

    self.navigationItem.titleView=switchView;

и напишите код метода checkOnOffState, например:

-(IBAction)checkOnOffState:(id)sender{

    UISegmentedControl* tempSeg=(UISegmentedControl *)sender;
    if(tempSeg.selectedSegmentIndex==0){
        [tempSeg setImage:[UIImage imageNamed:@"onSelected.png"] forSegmentAtIndex:0];
        [tempSeg setImage:[UIImage imageNamed:@"off.png"] forSegmentAtIndex:1];
    }
    else{
        [tempSeg setImage:[UIImage imageNamed:@"on.png"] forSegmentAtIndex:0];
        [tempSeg setImage:[UIImage imageNamed:@"offSelected.png"] forSegmentAtIndex:1];
    }   
}
2 голосов
/ 04 мая 2012

Я использовал это решение: UICustomSwitch : он работает, настраивая UISlider и устанавливая максимальное значение 1.

Вы можете изменить изображения вашего переключателя, правый / левый текст и использовать его с уникальным цветом на фоне (если вы не хотите использовать изображения).

Единственное изменение, которое я сделал, касалось названия: пользовательский интерфейс зарезервирован для Apple classe, поэтому я изменил его для своего собственного.

...