iPhone をサイレント モードに切り替えたり、サイド ボタンを押して音量を調整したりすると、画面の中央にアイコンが表示されます。Cocoa Touch では、開発者がこのスタイルのアラートを使用できますか? もしそうなら、それは何と呼ばれていますか?
3 に答える
チェックアウトする必要がありますMBProgressHUD
実際には、UIProgressHUD と呼ばれる文書化されていない非公開の iOS コードのレプリカです。
progressHUD は必要ありませんが、StatusHUD は必要です。良いものについては、こちらをご覧ください: https://github.com/samvermette/SVStatusHUD
Like sam (StatusHUD の作成者) は次のように述べています。
SVStatusHUD は、iOS の方向ロック、ミュート、音量変更で表示される HUD を模倣します。ハードウェアまたはその他の重要な通知 (たとえば、アクセサリがアプリによって検出された場合) に対応する場合にのみ使用する必要があります。操作の進行状況または成功を表示するだけの場合は、SVProgressHUD を確認する必要があります。
UIProgressHUD のようなプライベート API を使用しないでください。そうしないと、提出時に Apple がアプリを拒否します。ビューを操作してサブビューとして追加することで独自のデザインを構築するか、そうする無料のライブラリを使用することをお勧めします。独自のビューを作成する場合 (私のアプリで行っているように)、アルファ プロパティを操作することで簡単に表示したり非表示にしたりできます。次に例を示します。
最初に NIB ファイルを作成し、好きなようにデザインします。通知のように見えるように、サイズを変更することを忘れないでください (260*200 などに変更してください)。必要なコンポーネントを追加し、後でアクセスできるようにタグを付けます。私の例では、UILabel
.
カスタム通知を使用するビューUIView
で、.h ファイル (ここでは と呼びますpleaseWait
) にオブジェクトを作成し、.m ファイル (通常はviewDidLoad
) に次のようにロードします。
NSArray *nibMyNiceAlert = [[NSBundle mainBundle] loadNibNamed:@"myNiceAlertNibName" owner:self options:nil];
((UILabel*)[[nibMyNiceAlert objectAtIndex:0] viewWithTag:1]).text = NSLocalizedString(@"The text the user will see", @"my explanation of this text!");
pleaseWait = [nibConnecting objectAtIndex:0];
pleaseWait.frame = CGRectMake(30, 70, 260, 200);
pleaseWait.alpha = 0;
pleaseWait.clipsToBounds = YES;
pleaseWait.layer.cornerRadius = 20;
[self.view addSubview:pleaseWait];
clipsToBounds
とcornerRadius
ライブラリが必要でありQuartzCore/QuartzCore.h
、ビューの端を丸くするために使用されることに注意してください。ロード時にアラートを表示したくないため、アルファが 0 から始まることに注意してください。
この通知を表示したいときはいつでも:
[UIView beginAnimations:@"FadeIn" context:nil];
[UIView setAnimationDuration:0.2];
pleaseWait.alpha = 0.65;
[UIView commitAnimations];
そしてそれを削除するには:
[UIView beginAnimations:@"FadeOut" context:nil];
[UIView setAnimationDuration:0.2];
pleaseWait.alpha = 0;
[UIView commitAnimations];
読み込み段階で行ったように、Tag 1 のオブジェクトにアクセスすることで、通知ラベルのテキストを表示する前にいつでも変更できることを覚えておいてください。
これが何らかの形で役立つことを願っています。