2009-10-05 11 views
1

Récemment, j'ai cherché à créer un moyen de montrer à un utilisateur que quelque chose est en cours de chargement. Je suis sûr que tout le monde avec un iPhone a vu ce sont des applications avant, mais quelle est la meilleure façon de le faire?Quelle est la meilleure façon de montrer à l'utilisateur que quelque chose se charge sur l'iPhone?

J'ai commencé à utiliser UIProgressHUD, mais il m'a été signalé que vous ne devriez pas vraiment utiliser d'API privées (non documentées).

Puis je suis passé à this qui est une version personnalisée appelée MBProgressHUD, mais d'après mon expérience, cela ne montre pas la partie de chargement lorsque j'essaie de l'appeler pas d'un bouton et je l'ai trouvé très buggué (It wasn pas très difficile de planter l'exemple donné en cliquant juste loin).

Je l'ai ensuite trouvé par James Brannan de son livre, mais je ne suis pas tout à fait sûr pourquoi il prétend que c'est la "bonne façon" de le faire quand j'ai vu de nombreuses applications dans le passé avec quel aspect comme le UIProgressHUD.

Quelqu'un a-t-il des idées?

EDIT: This is pretty good...

Merci

Répondre

2

Il n'y a pas "meilleure". Une autre façon de le faire est de simplement mettre un UIView au-dessus des sous-vues de votre vue principale, marquer sa propriété userInteraction et la griser si nécessaire. Vous pouvez même ajouter une UIActivityIndicator sous-vue de ce "premier plan" UIView, en démarrant son animation si nécessaire. Lorsque votre chargement est terminé, masquez/arrêtez l'indicateur d'activité et effacez la couleur de la vue de premier plan.

2

Si vous parlez de chargement sur un réseau, une bonne chose pour commencer est de permettre l'indicateur d'activité de réseau barre d'état:

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 

Notez que vous devez le mettre à NO lorsque vous avez terminé ! Cela ne devrait être utilisé que pour indiquer l'activité du réseau.

C'est un peu subtile cependant, il est une excellente idée d'avoir une sorte d'indicateur de progression IF vous pouvez dire exactement combien de temps quelque chose va prendre - téléchargements où vous connaissez la taille et compter les octets entrants, ou les téléchargements où vous surveillez également les octets sortant et connaissez la taille totale.

Si votre longueur d'appel est très petite ou si la taille n'est pas vraiment connue (l'appel de service Web est un bon exemple), une sorte de superposition avec un UIActivityIndicator peut être très relaxante (vous pouvez également créer une variante personnalisée avec un ensemble d'images ajoutées à une vue UIImage pour animer). La clé est que, si possible, cela ne devrait pas empêcher l'utilisateur de faire d'autres choses si possible.

De même, si vous avez plusieurs choses en cours, vous pouvez ajouter des messages décrivant l'état dans lequel vous vous trouvez (comme "ajuster l'image", "charger l'image", etc.).

+1

Ce serait bien si tous les développeurs utilisaient networkActivityIndicatorVisible uniquement pour indiquer l'activité du réseau et non pas n'importe quel type d'activité ou de progression. – mahboudz

+0

C'est un très bon point, j'ai interprété "chargement" du message original pour signifier "chargement du réseau", mais en relisant je réalise qu'il pourrait charger un autre type de ressource ... Je vais éditer mon post pour clarifier . –

+0

Merci, ce n'est pas tout à fait ce que je recherchais mais j'ai trouvé cela très utile! J'utilise ceci en ce moment (http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html) et l'indicateur d'activité de réseau.Mon problème maintenant est ce qu'il faut faire s'il n'y a pas de connexion réseau! –