WatchKitにApple Watch?)のActivityIndicator(またはそれに似たもの)がありますか?
編集:この回答はもともと、Apple携帯電話とWi-Fi接続を備えたモデルを見ると、デバイスの新しいモデルには適用されなくなる可能性があります(大幅なパフォーマンスの向上を考慮)。
Apple開発者フォーラムのこの thread には、AppleエンジニアからAppleでネットワーク操作を行うべきではない理由に関する正式な回答があります。 Apple>]ウォッチ。
時計アプリ/拡張機能からネットワーク操作を実行しない大きな理由は2つあります。
ユーザーは短時間だけ時計と対話します。これについては、 Human Interface Guidelines を参照してください。
IOSアプリとのインタラクションを数分で測定すると、WatchKitアプリとのインタラクションが数秒で測定されることが期待できます。そのため、相互作用は短く、インターフェースはシンプルでなければなりません。
ネットワーク要求が完了しない場合、システムはデッドロックする可能性があります。
一般的に、WatchKit拡張機能内で複雑なネットワーク操作を実行しないことをお勧めします...
[Appleは、開発者がデータベース(おそらくiOSアプリ)の情報を更新するプロセスを1つ持つことを推奨します。その後、拡張機能は(基本的に)この[キャッシュ]データベースへの読み取り専用アクセス権を持ちます... 。
それは言われています。 UIActivityIndicator、rdar:// 19363748が本当に必要な場合(これはまだレーダーで開かれているとは思わない)、開発者は既に公式サポートのリクエストを提出しています。
選択したアクティビティインジケータスタイルで一連の画像を作成し、startAnimatingWithImagesInRange:duration:repeatCount:
APIを使用してアニメーション化できます。 wkinterfaceimage アニメーションの例については、AppleのListerアプリを参照してください。
または、WatchKit Animationチュートリアルについては here を、 included "spinner" graphics を参照してください。
オプションに追加するために、GitHubでJBWatchActivityIndicator
プロジェクトを作成し、独自のイメージシーケンスを生成できるようにしました。 https://github.com/mikeswanson/JBWatchActivityIndicator
また、独自のアクティビティを作成したくない場合は、Appleのようなアクティビティインジケータアニメーションも含まれます。
Apple Watch、こちらから入手可能 https://github.com/tijoinc/WatchActivityIndicator
WatchKitフレームワークにActivityIndicatorを表示する方法はありません。ただし、円形のイメージを用意して、自分で無限のアニメーションを簡単に作成できます。画像を準備し、次のように名前を付けますframe-0, frame-1, frame-2...frame-n
そしてあなたのコードで:
[self.yourInterfaceImage setImageNamed:@"firstFrame-"]; //setting first frame
[self.yourInterfaceImage startAnimatingWithImagesInRange:[self.model imageRange]
duration:0.4
repeatCount:0];
// [self.model imageRange] will return NSRange from 0 to n
// repeatCount == 0 means infinity. Of course you can set some limit, like 100.
お役に立てれば。
私の意見では、独自のSpinnerを作成しようとすると、過剰なリソースが使用されます。 Appleが良いアイデアだと思ったら、彼らはそれを提案したでしょう。
代わりに、アルファを調整する画像を用意します。ブール値を使用して、アルファを加算または減算する必要があるかどうかを確認します。
if (add)
{
count=count+5;
if (count==100)
{
add=false;
}
}
else
{
count=count-5;
if (count==0)
{
add=true;
}
}
float thealpha=((float)count/100);
[self.scanb setAlpha:thealpha];
}