iPhone Core Animation - Dessin d'un Cercle
Je souhaite créer une animation. La meilleure façon que je peux expliquer ce que c'est si vous pouvez imaginer le dessin d'un cercle. Il commence par le haut ou 12 heures et attire des aiguilles d'une montre tout le chemin jusqu'à ce qu'il devient un cercle complet sur l'espace de 10 secondes.
Le placard je suis venu c'est pour tracer un point en rotation autour d'un point central à l'aide de Core Animation (à l'aide de l'exemple de code ici). Mais je suis à une perte sur la façon de dessiner le cercle? Toutes les suggestions sont les bienvenues.
Merci Beaucoup 🙂
- Êtes-vous essayer de dessiner un cercle secteur où l'angle augmente, jusqu'à devenir un cercle complet (rempli) ou tout simplement dessiner une ligne courbe jusqu'à ce qu'il devient un cercle complet (juste le contour, il n'est pas rempli)?
- im essayant de dessiner une ligne courbe jusqu'à ce qu'il devient un cercle complet, juste le contour n'est pas rempli 🙂
Vous devez vous connecter pour publier un commentaire.
Vraiment ce que vous devez faire est de animer le coup de CAShapeLayer où la trajectoire est un cercle. Cela va être accéléré en utilisant la Base de l'Animation et de l'est moins salissant ensuite faire partie d'un cercle en drawRect:.
Le code ci-dessous va créer un cercle d'un calque de forme dans le centre de l'écran et d'animer la course de la dans le sens horaire de sorte qu'il semble que si elle est en cours d'élaboration. Vous pouvez bien sûr utiliser n'importe quelle forme que vous souhaitez. (Vous pouvez lire cet article sur Ole Begemanns blog pour en savoir plus sur la façon d'animer le coup d'une couche de forme.)
Remarque: que le stoke propriétés ne sont pas les mêmes que la frontière propriétés de la couche. Pour modifier la largeur de la course, vous devez utiliser "largeur de raie" au lieu de "borderWitdh" etc.
0.5
au lieu de1.0
à ne remplir que la moitié du cercle.drawAnimation.toValue = @0.5;
strokeEnd
propriété0.5
sur la couche. Ce n'est pas fait dans cet exemple, car 1.0 est la valeur par défaut.bezierPathWithArcCenter
au lieu debezierPathWithRoundedRect
, parce que je préfère le système de coordonnées qu'il me donne, en plus de la capacité à animer la rotation dans le sens inverse... Mais ce qui m'a sauvé beaucoup de temps, donc merci beaucoup! 🙂Voici une autre solution au problème, basé sur @David réponse. Cette approche permet de définir la direction du cercle de l'animation, et offre un peu plus de contrôle. Edit: j'ai écrit un blog sur comment dessiner un cercle avec Swift, que je vais essayer de tenir à jour avec les bêtas. Vérifier si le code ci-dessous ne fonctionne pas pour vous.
J'ai eu une solution à ce problème, le code ci-dessous. Me semble que j'ai foiré dans mon explication du problème à portée de main afin réécrit c'est une autre question qui a répondu avec la solution correcte, voir ici
merci à tous pour leurs conseils!!!
Ok j'ai une correction partielle. J'ai trouvé le code suivant qui attire les segments de cercle. C'est en fait une sous-classe UIView qui obtient son drawRect tiré à chaque fois que ses progrès devraient être mis à jour. La seule question que je me pose maintenant est de savoir comment aurais-je le modifier de sorte qu'au lieu de dessiner des sections ou des tranches il suffit de tracer le cercle de l'avc?