Je voudrais créer un cadran avec un comportement similaire à certaines des applications de téléphone rétro. Ceux-ci ont un dialer circulaire qui vous permet de le faire tourner avec votre doigt. Des idées comment cela est créé ou des liens qui en discutent?Des exemples de création d'un cadran?
Répondre
Créez votre cadran circulaire avec des chiffres. Créez votre pièce de numérotation mobile comme une image transparente centrée sur le cadran numérique afin que vous puissiez voir les chiffres à travers les trous transparents. Appliquez une petite image pour l'arrêt du doigt sur les deux. Lorsque vous touchez l'une des régions du trou, suivez le mouvement du doigt. Lorsque le doigt bouge, faites pivoter l'image du cadran transparent pour la suivre en utilisant une matrice de transformation. Si le doigt bouge dans le mauvais sens ou quand le doigt est soulevé ou sort du cadran rotatif, le cadran est "relâché" et vous annulez la rotation en utilisant une vitesse appropriée pour simuler un retour à ressort.
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:d];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationBeginsFromCurrentState:YES];
CGAffineTransform transform = CGAffineTransformMakeRotation(/* some angle */);
image.transform = transform;
[UIView commitAnimations];
La détection du nombre réel composé pourrait être fait de plusieurs façons, de créer des boutons invisibles sur le cadran et saisissant des événements de ceux-ci ou en calculant l'angle de rotation nécessaire pour retourner le cadran rotatif à la maison. Je ne pense pas que la mise en œuvre serait très difficile, c'est une œuvre d'art qui serait difficile.
Merci beaucoup! Comment le faites-vous suivre la vitesse de l'utilisateur plutôt que la vitesse définie via setAnimationDuration:? – 4thSpace
Vous pouvez obtenir les coordonnées tactiles assez facilement. Si vous pensez à un cadran de téléphone mécanique, vous pouvez le faire pivoter à peu près à la vitesse que vous voulez si vous appuyez assez fort. Donc, alors que les touches changent, périodiquement (minuterie? Chaque notification nth touch?) Travailler l'angle entre le point précédemment échantillonné, le nouveau point et le point de pivotement central et faire une rotation assez rapide (comme ci-dessus) pour suivre le doigt. Je voudrais être capable de le déplacer dans le sens des aiguilles d'une montre à presque n'importe quelle vitesse mais pour qu'il revienne toujours dans le sens contraire des aiguilles d'une montre à la vitesse du ressort mécanique. –