Est-ce qu'il y a un ActivityIndicator dans WatchKit pour Apple Watch?

est-ce qu'il y a un ActivityIndicator (ou quelque chose comme ça) dans WatchKit pour Apple Watch? Comment Pouvez-vous tous donner votre avis à l'utilisateur sur une activité de fond de plus longue durée?

27
demandé sur AstroCB 2015-03-06 21:20:04

5 réponses

Edit : cette réponse a été publiée à l'origine avant L'introduction des modèles Apple Watch avec connectivité cellulaire et wifi, et peut donc ne plus s'appliquer sur les nouveaux modèles de l'appareil (compte tenu des améliorations significatives de la performance).


Ce thread sur les forums des Développeurs Apple a une réponse faisant autorité dans un Apple expliquez pourquoi vous ne devriez pas effectuer des opérations réseau avec Apple Watch.

Il ya deux grandes raisons de ne pas effectuer des opérations de réseau à partir de votre montre app / extension:

  1. les utilisateurs interagissent avec leurs montres pendant une brève période. Voir le Human Interface guidelines sur celui-ci.

    si vous mesurez les interactions avec votre iOS application en quelques minutes, vous pouvez vous attendre à ce que les interactions avec votre application WatchKit soient mesurées en quelques secondes. Les interactions doivent donc être brèves et les interfaces doivent être simples.

  2. le système peut être bloqué si la demande réseau n'est pas complète.

    notre recommandation est que, en général, vous ne devriez pas effectuer des opérations de réseau complexes à l'intérieur d'une Extension WatchKit...

    [Apple recommande aux développeurs] d'avoir un seul processus qui est chargé de mettre à jour les informations dans votre base de données (probablement votre application iOS), et ensuite vos extensions auraient (essentiellement) un accès en lecture seule à cette base de données [mise en cache]....


cela étant dit. Si vous avez vraiment besoin D'un indicateur UIActivityIndicator, rdar: / / 19363748( Je ne pense pas que celui-ci a été ouvert radar-ed encore), les développeurs ont déjà déposé demandes de soutien officiel.

vous pouvez créer une série d'images dans le style de l'indicateur d'activité de votre choix et ensuite les animer à l'aide de l'API startAnimatingWithImagesInRange:duration:repeatCount: . Voir L'application Lister D'Apple pour un exemple d'animation .

alternativement, regardez ici pour un tutoriel D'Animation de WatchKit et incluait" spinner "graphics .

14
répondu Samuel Spencer 2018-09-27 14:55:55

juste pour ajouter aux options, j'ai créé un projet JBWatchActivityIndicator sur GitHub qui vous permet de générer vos propres séquences d'image: https://github.com/mikeswanson/JBWatchActivityIndicator

il inclut également des animations d'indicateurs d'activités de type Apple si vous ne voulez pas créer votre propre.

17
répondu Mike Swanson 2015-05-08 22:30:07

il n'y a pas de méthode pour afficher ActivityIndicator dans WatchKit Framework. Toutefois, vous pouvez préparer une certaine image circulaire et facilement créer l'animation infinie vous-même. Préparer des images et les nommer comme ceci frame-0, frame-1, frame-2...frame-n

et puis dans votre code:

    [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.

Espérons que cette aide.

4
répondu lvp 2015-03-07 14:11:25

j'ai construit un indicateur d'activité simple pour la montre Apple, disponible ici https://github.com/tijoinc/WatchActivityIndicator

3
répondu Tim Johnsen 2015-09-25 14:39:57

à mon avis, essayer de créer votre propre Spinner utilise des ressources excessives. Si Apple pensait que c'était une bonne idée, ils l'auraient suggéré.

j'aurais plutôt juste une Image que vous ajustez L'Alpha. Utilisez un booléen pour voir si vous devriez ajouter ou soustraire Alpha.

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];

}

2
répondu Belboz 2015-08-28 15:10:20