いろいろな状態のボタンを作成する

UIButtonを使って、いろいろな状態のボタンを作成する方法について解説します。

サンプルコードの実行例

概要

  1. ボタンを利用不可能にする:enabledプロパティ
  2. ボタンを非表示にする:hiddenプロパティ
  3. ボタンを半透明にする:alphaプロパティ
  4. 透明なボタンを作成する:initWithFrame:関数とbackgroundColorプロパティ

ボタンを利用不可能にする

利用不可ボタンの例

ボタンのenabledプロパティをNOに設定すると、ボタンが利用不可の状態になります。

クラス
UIControl
プロパティ
enabled

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

ディフォルトの状態では、ボタンを利用不可に設定してもラベル文字列の色は変わりません。そこでsetTitleColor:forState関数を利用して利用不可状態のラベル文字列の色を変更することで、利用可能/不可を見分けやすくすることができます。

クラス
UIButton
プロパティ
setTitleColor:forState:
利用例
[ disableButton setTitleColor:[ UIColor grayColor ] forState:UIControlStateDisabled ];

setTitleColor:forState:関数の公式リファレンス

利用不可能に設定したボタンはタップできないため、UIControlEventTouchUpInsideなどのイベントは発生しません。

サンプルコード

UIButton * disableButton = [ UIButton buttonWithType:UIButtonTypeRoundedRect ];
disableButton.frame = CGRectMake( 50, 100, 220, 40 );
[ disableButton setTitle:@"利用不可のボタン" forState:UIControlStateNormal ];
[ disableButton setTitleColor:[ UIColor grayColor ] forState:UIControlStateDisabled ];
disableButton.enabled = NO; // 利用不可に設定

ボタンを非表示にする

ボタンのhiddenプロパティをYESに設定すると、ボタンが非表示になります。

クラス
UIView
プロパティ
hidden
利用例
hiddenButton.hidden = YES;

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

非表示に設定したボタンはタップできないため、UIControlEventTouchUpInsideなどのイベントは発生しません。

サンプルコード

UIButton * hiddenButton = [ UIButton buttonWithType:UIButtonTypeRoundedRect ];
hiddenButton.frame = CGRectMake( 50, 200, 220, 40 );
[ hiddenButton setTitle:@"非表示のボタン" forState:UIControlStateNormal ];
hiddenButton.hidden = YES; // 非表示に設定

ボタンを半透明にする

半透明ボタンの例

ボタンのalphaプロパティに1未満の値を設定すると、ボタンが半透明になります。

クラス
UIView
プロパティ
alpha
利用例
alphaButton.alpha = 0.3;

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

半透明のボタンはタップできるので、UIControlEventTouchUpInsideなどのイベントも発生します。

しかし、alphaに0を設定して完全に透明にしてしまうとタップできなくなり、UIControlEventTouchUpInsideなどのイベントも発生しません。

サンプルコード

UIButton * alphaButton = [ UIButton buttonWithType:UIButtonTypeRoundedRect ];
alphaButton.frame = CGRectMake( 50, 150, 220, 40 );
[ alphaButton setTitle:@"半透明のボタン" forState:UIControlStateNormal ];
alphaButton.alpha = 0.3;

透明なボタンを作成する

完全に透明なボタンを作成するには、以下の手順でボタンを作成します。

  1. alloc関数とinitWithFrame:関数を利用してUIButtonインスタンスを生成する(buttonWithType:関数は利用しない)
  2. ボタンのラベル文字列は設定しない(setTitle:forState:関数は利用しない)
  3. ボタンの背景色を透明に設定する。
クラス
UIView
プロパティ
backgroundColor
利用例
transparentButton.backgroundColor = [ UIColor clearColor ];

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

背景が透明かつラベル文字列が未設定なので画面には何も表示されませんが、タップできるのでUIControlEventTouchUpInsideなどのイベントが発生します。

サンプルコード

UIButton * transparentButton = [ [ [ UIButton alloc ] initWithFrame:CGRectMake( 50, 250, 220, 40 ) ] autorelease ];
transparentButton.backgroundColor = [ UIColor clearColor ];

関連する記事