6

このコードを使用してUISwitchを作成しました...

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

作成されたボタンは...になります。

ここに画像の説明を入力してください

デフォルトのプロパティは、

  1. 「 ON」と「OFF」の状態が含まれています
  2. OFFボタンは、ONボタンはです。

カスタマイズしたスイッチを作成したいので、スイッチの背景色とテキストを変更する必要があります。出来ますか?詳しく説明してください。

前もって感謝します、

Rajkanth

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 に答える