banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

iOS開発におけるカスタムシステムのUIActionSheetでボタンの属性を変更する方法

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 {
        }
    }
} 

}

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。