iOS : UISwitchでスイッチコントロールを作る

UISwitchを利用して、スイッチコントールを作る方法を解説します。

サンプルコードの実行例

概要

スイッチコントールは以下の手順で作成します。

  1. alloc関数とinit関数でUISwitchクラスのインスタンスを生成する
  2. onプロパティでオン/オフ状態を指定する
  3. UIControlEventValueChangedイベントを利用して、オン/オフ切り替え時の動作を実装する
  4. setOn:animated:関数を利用して、オン/オフ状態を切り替える

インスタンスを生成する

alloc関数とinit関数を利用してUISwitchクラスのインスタンスを生成します。

UISwitch * switch1 = [ [ [ UISwitch alloc ] init ] autorelease ];
switch1.frame = CGRectMake( 40, 50, 1, 1 );

スイッチコントールのサイズは以下のように固定となります。

frame/boundsプロパティやinitWithFrame:関数を利用してコントールの位置/サイズを指定しても、サイズ情報は無視され、位置のみ変更できます。

オン/オフ状態を指定する

onプロパティでスイッチコントロールのオン/オフ状態を変更します。

クラス
UISwitch
プロパティ
on
利用例
switch1.on = YES;

onプロパティの公式リファレンス

setOn:animated関数を利用すると、オン/オフ状態をアニメーション付きで切り替えることができます。onプロパティを利用するとアニメーションは付きません。

クラス
UISwitch
関数
setOn:animated:
利用例
[ m_objSwitch2 setOn:YES animated:YES ];

setOn:animated:関数の公式リファレンス

その他

スイッチコントロールに表示されるテキストを変更することはできません。

スイッチコントロールは、以下の2通りの操作でオン/オフ状態を切り替えることができます。

サンプルコード

- ( void )loadView
{
    [ super loadView ];
    
    UIView * parentView = self.view;
    
    parentView.backgroundColor = [ UIColor grayColor ];

    // UISwichを生成
    UISwitch * switch1 = [ [ [ UISwitch alloc ] init ] autorelease ];
    
    // 表示位置を指定。縦横サイズは無視される(94/27で固定)
    switch1.frame = CGRectMake( 40, 50, 1, 1 );
    
    // 初期値を指定する
    switch1.on = YES;
    
    // ON/OFF切り替え時に呼びされる関数を指定する
    [ switch1 addTarget:self action:@selector( onChangeSwitch: )
        forControlEvents:UIControlEventValueChanged ];

    // 親Viewに登録する
    [ parentView addSubview:switch1 ];
    
    m_objSwitch1 = [ switch1 retain ];
    
    // 連動するUISwitchを作成する
    UISwitch * switch2 = [ [ [ UISwitch alloc ] init ] autorelease ];
    switch2.on = NO;
    switch2.frame = CGRectMake( 186, 50, 1, 1 );
    [ parentView addSubview:switch2 ];
    
    m_objSwitch2 = [ switch2 retain ];
    
    return;
}

- ( void )onChangeSwitch:( id )sender
{
    NSLog( @"UISwitchの値が変更されたよ!" );
    
    [ m_objSwitch2 setOn:!m_objSwitch1.on animated:YES ];
    
    return;
}

関連する記事