Xamarin.iOS の進行状況とアクティビティのインジケーター

アプリでは、データの読み込みや処理などの実行時間の長いタスクを実行する必要があり、この遅延によって UI の更新が遅れる可能性があります。 この間、常に進行状況インジケーターを使用して、今まさにシステムが作業していること示し、ユーザーを安心させる必要があります。 これにより、アプリが要求に対応していること、入力を待機していないことを示すユーザー コントロールが表示され、待機時間を正確かつ詳細に示す手段を提供できます。

iOS では、アプリ内でこの進行状況を表示する主な方法として、アクティビティ インジケーター (特定の "ネットワーク" アクティビティ インジケーターを含む) と進行状況バーの 2 つが提供されています。

アクティビティのインジケーター

アプリが長いプロセスを実行しているが、タスクに必要な正確な時間がわからない場合は、アクティビティ インジケーターを表示する必要があります。

Apple には、アクティビティ インジケーターの使用に関する次の推奨事項があります。

  • 可能な限り、進行状況バーを使用する - アクティビティ インジケーターは、実行中のプロセスにかかる時間をユーザーにフィードバックしないため、長さがわかっている場合 (ダウンロードするファイルのバイト数など) は常に進行状況バーを使用します。
  • インジケーターを常にアニメーション化しておく - ユーザーは、静止したアクティビティ インジケーターを停止しているアプリと結び付けるので、インジケーターが表示されている間は常にアニメーション化しておく必要があります。
  • 処理中のタスクについて説明する - アクティビティ インジケーターを単独で表示するだけでは不十分であり、待機しているプロセスについてユーザーに情報を提供する必要があります。 タスクを明確に定義したわかりやすいラベル (通常は 1 つの完全な文) を含めます。

アクティビティ インジケーターの実装

アクティビティ インジケーターは、UIActivity が実行されていることを示すために、UIActivityIndictorView クラスを通じて実装されます。

アクティビティ インジケーターの動作の管理

アクティビティ インジケーターのアニメーションを開始および停止するには、StartAnimating() および StopAnimating() メソッドを使用します。

StopAnimating() が呼び出された後にアクティビティ インジケーターが消えるようにするには、HidesWhenStopped プロパティを true に設定します。 既定では、これは true に設定されています。 任意の時点で、IsAnimating プロパティをチェックすることで、アクティビティ インジケーターが回転アニメーションを実行しているかどうかを確認できます。

アクティビティ インジケーターの外観の管理

アクティビティ インジケーターをインスタンス化するときに、UIActivityIndicatorViewStyle 列挙型をパラメータとして渡すことができます。 これを使用して、視覚スタイルを GrayWhite、または WhiteLarge に設定できます。次に例を示します。

activitySpinner = new UIActivityIndicatorView(UIActivityIndicatorViewStyle.WhiteLarge);

Color プロパティを設定することで、UIActivityIndicatorViewStyle によって提供された色をオーバーライドできます。

進行状況バー

進行状況バーは、時間のかかるタスクの状態と長さを示すために色で塗りつぶされた線として表示されます。 タスクの長さがわかっている場合、または計算できる場合は、常に進捗状況バーを使用する必要があります。

Apple には、進捗状況バーの使用に関する次の推奨事項があります。

  • 進行状況を正確に報告する - 進行状況バーは、タスクを完了するために必要な時間を常に正確に表す必要があります。 アプリが忙しく動作しているように見せるために時間を偽って表示しないでください。
  • 適切に定義された期間に使用する - 進行状況バーは、時間のかかるタスクが実行されていることを示すだけでなく、タスクがどの程度完了したかと、残り時間の見積もりをユーザーに示す必要があります。

進行状況バーの実装

進捗状況バーは、UIProgressView をインスタンス化することで作成されます。

進行状況バーとストーリーボード

iOS Designer を使用する場合は、UI に進行状況バーを追加することもできます。 ツールボックスProgress View を検索し、ビューにドラッグします。

プロパティ パッドでは、次のプロパティを調整できます。

[スタイル]、[進行状況]、[進行状況の濃淡]、[追跡の濃淡]、[進行状況イメージ]、[追跡イメージ] の各プロパティを変更できる Properties Pad を示すスクリーンショット。

進行状況バーの動作の管理

バーの進行状況は、Progress プロパティを使用して最初に設定できます。

ProgressBar.Progress = 0f;

進行状況は、SetProgress メソッドを使用して、変更をアニメーション化するかどうかを宣言するブール値を渡すことで調整できます。

ProgressBar.SetProgress(1.0f, true);

進行状況バーの使用の詳細については、[進行状況のレポート] レシピを参照してください。

進行状況バーの外観の管理

アクティビティ インジケーターと同様に、進行状況バーをインスタンス化するときに、UIProgressViewStyle 列挙型をパラメータとして渡すことができます。

進行状況とトラックの画像および濃淡の色は、次のプロパティを使用して調整できます。

progressBar = new UIProgressView(UIProgressViewStyle.Default)
            {
                ProgressImage = UIImage.FromBundle("TrackImage"),
                ProgressTintColor = UIColor.Cyan,
                TrackImage = UIImage.FromBundle("TrackImage"),
                TrackTintColor = UIColor.Magenta
            };