SDK では、iOS の UIActionSheet はごくわずかなスタイルしか提供されていません。これらのスタイルは基本的に開発のニーズを満たすことができますが、より複雑な要件に遭遇することもあります。その場合、UIActionSheet を個別にカスタマイズする必要があります。ボタンの属性を変更することで変更を実現します。iOS4 以前のバージョンでは操作がやや複雑ですが、iOS5 以降、UIActionSheet 内のボタンは UIButton タイプに変更されたため、より簡単になりました。UIActionSheet のすべてのサブビューを直接ループ処理し、対応するボタンを見つけてその属性を変更することができます。実装は非常に簡単ですが、注意が必要なのは、UIActionSheet 内のボタンリストのボタンインデックス ID は、tag 属性を使用して直接取得できることです。これにより、それらを簡単に見つけることができます。
参考コード:
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {
for (UIView *view in actionSheet.subviews) {
if (view.tag == 2) {
UIButton *button = (UIButton *) view;
// 背景の変更
[button setBackgroundImage:[button backgroundImageForState] forState];
// 色の変更
[button setTitleColor:[UIColor whiteColor] forState];
// ボタンの選択状態、選択後に背景が変わらないようにする
[button setSelected];
} else {
}
}
} else {
//iOS4以前のバージョンでは、ボタンはUIButtonではなくUIThreePartButtonを継承しています
for (UIView \*view in actionSheet.subviews) {
if (view.tag == 2) {
UIControl \*btn = (UIControl \*) view;
\[btn setSelected:YES\];
} else {
}
}
}
}