UIButtonを使って、いろいろな状態のボタンを作成する方法について解説します。
ボタンのenabledプロパティをNOに設定すると、ボタンが利用不可の状態になります。
ディフォルトの状態では、ボタンを利用不可に設定してもラベル文字列の色は変わりません。そこで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に設定すると、ボタンが非表示になります。
hiddenButton.hidden = YES;
非表示に設定したボタンはタップできないため、UIControlEventTouchUpInsideなどのイベントは発生しません。
UIButton * hiddenButton = [ UIButton buttonWithType:UIButtonTypeRoundedRect ];
hiddenButton.frame = CGRectMake( 50, 200, 220, 40 );
[ hiddenButton setTitle:@"非表示のボタン" forState:UIControlStateNormal ];
hiddenButton.hidden = YES; // 非表示に設定
ボタンのalphaプロパティに1未満の値を設定すると、ボタンが半透明になります。
alphaButton.alpha = 0.3;
半透明のボタンはタップできるので、UIControlEventTouchUpInsideなどのイベントも発生します。
しかし、alphaに0を設定して完全に透明にしてしまうとタップできなくなり、UIControlEventTouchUpInsideなどのイベントも発生しません。
UIButton * alphaButton = [ UIButton buttonWithType:UIButtonTypeRoundedRect ];
alphaButton.frame = CGRectMake( 50, 150, 220, 40 );
[ alphaButton setTitle:@"半透明のボタン" forState:UIControlStateNormal ];
alphaButton.alpha = 0.3;
完全に透明なボタンを作成するには、以下の手順でボタンを作成します。
transparentButton.backgroundColor = [ UIColor clearColor ];
背景が透明かつラベル文字列が未設定なので画面には何も表示されませんが、タップできるのでUIControlEventTouchUpInsideなどのイベントが発生します。
UIButton * transparentButton =
[ [ [ UIButton alloc ] initWithFrame:CGRectMake( 50, 250, 220, 40 ) ] autorelease ];
transparentButton.backgroundColor = [ UIColor clearColor ];