それはまったく簡単なことではありません。
SDK が を使用している場合は、メソッドを入れ替えUIAlertView
てみてください。show
実装では、おおよそ次のことを行う必要があります。
1) 元の UIAlertView を表示させないでください。カスタマイズするのは非常に困難です。
2).delegate
必要なときに通知できるように古い参照を保持します。
3) 独自のカスタム UIView を作成して使用します[[UIApplication sharedApplication].keyWindow addSubview:myCustomAlertView];
。
4) 次のようなプロパティを使用して、以前の UIAlertView 変数 (つまり、ボタンのタイトル、textFields など) をすべて取得できると思います。
@property(nonatomic,copy) NSString *title;
@property(nullable,nonatomic,copy) NSString *message;
- (nullable NSString *)buttonTitleAtIndex:(NSInteger)buttonIndex;
@property(nonatomic,readonly) NSInteger numberOfButtons;
@property(nonatomic) NSInteger cancelButtonIndex;
5) 独自のデザインを作成し、必要に応じて対応するデリゲート メソッドを呼び出します。
別のアプローチとして、Apple のプライベート API を使用する方法がありますが、これは悪い結果につながる可能性があります。
これは非常にハッキーなアプローチです。まず、それが機能するという保証はありません。次に、アプリが拒否される可能性があります。なので、あまりオススメしません…
ただし、このアプローチを本当に使用したい場合は、次のことを試してください。
しばらく[myAlertView show];
してからプロパティを確認します (つまり、0.01 秒で十分です)。

次に、UI 関連の情報が含まれている可能性のある疑わしいプロパティ (おそらく UIView クラス) を探します。たとえば、__representer
非常に興味深いものに見えます。これには制約があり、labelContainerView
... これらのプロパティを試してみてください。
それを取得するには__representer
、KVC と KVO を使用します (つまり、 から始めid theAlertController = [myAlertView valueForKey:@"_alertController"];
ます)。そして、どんどん深く潜っていきます。
うまくいけば、有用なプロパティを見つけて、KVC を介してそれらの値を変更できるようになるでしょう。