6

我使用此代码创建了一个 UISwitch ...

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

创建的按钮将是....

在此处输入图像描述

默认属性是,

  1. 它包含“”和“”状态
  2. OFF 按钮为白色, ON按钮为蓝色

我想创建一个自定义开关,以便更改开关中的背景颜色和文本。是否可以?请详细说明。

提前致谢,

拉杰坎特

4

2 回答 2

20

除非并且直到您编写自己的控件,否则您不能修改 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];
    }   
}
于 2011-02-23T07:29:58.510 回答
2

我使用了这个解决方案:UICustomSwitch:它可以自定义 UISlider 并将最大值设置为 1。

您可以更改开关的图像、右/左文本并在背景上使用独特的颜色(如果您不想使用图像)。

我所做的唯一更改是关于名称:UI 是为 Apple 类保留的,所以我为自己更改了它。

于 2012-05-04T16:27:01.463 回答