1

最近、何かがロードされていることをユーザーに示す方法を作成しようとしています。iPhoneを持っている人なら誰でもこれが以前にアプリだと思ったことがあると思いますが、それを行う最良の方法は何ですか?

UIProgressHUDを使い始めましたが、プライベート(文書化されていない)APIを実際に使用するべきではないことが指摘されました。

次に、MBProgressHUDと呼ばれるカスタムバージョンであるこれに移動しましたが、これを使用した経験では、ボタンからではなく呼び出しようとしたときに読み込み部分が表示されず、非常にバグがありました(それほど難しくはありませんでした)クリックするだけでサンプルコードがクラッシュします)。

その後、James Brannanが彼の本からこれを見つけましたが、過去にUIProgressHUDのようなアプリをたくさん見たときに、なぜこれが「適切な方法」であると彼が主張するのかよくわかりません。 。

誰かアイデアはありますか?

編集:これはかなり良いです...

ありがとう

4

2 に答える 2

2

ネットワークを介したロードについて話している場合、最初に、ステータスバーのネットワークアクティビティインジケータを有効にすることをお勧めします。

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

完了したら、NOに設定する必要があることに注意してください。これは、ネットワークアクティビティを示すためにのみ使用する必要があります。

それは少し微妙ですが、何かがかかる時間を正確に知ることができる場合は、ある種の進行状況インジケーター用意することをお勧めします-サイズを知っていて着信バイトをカウントするダウンロード、または発信バイトを監視するアップロードと合計サイズを知っています。

呼び出しの長さが非常に短い場合、またはサイズが実際にはわからない場合(Webサービス呼び出しが良い例です)、UIActivityIndi​​catorを使用したある種のオーバーレイは、非常にリラックスできます(画像のセットを追加してカスタムバリアントを作成することもできます)アニメーション化するUIImageビュー)。重要なのは、可能であれば、可能であればユーザーが他のことをするのを妨げてはならないということです。

また、複数のことが行われている場合は、現在の状態を説明するメッセージを追加することをお勧めします(「画像の調整」、「画像のアップロード」など)。

于 2009-10-06T05:14:19.647 に答える
2

唯一の「最善」の方法はありません。これを行う別の方法はUIView、メイン ビューのサブビューの上に配置し、そのuserInteractionプロパティをマークして、必要に応じてグレー表示にすることです。UIActivityIndicatorこの「前景」のサブビューとして を追加してUIView、必要に応じてアニメーションを開始することもできます。読み込みが完了したら、アクティビティ インジケーターを非表示/停止し、フォアグラウンド ビューの色をクリアします。

于 2009-10-05T12:16:38.930 に答える