Mes maths sont nulles donc j'ai besoin d'aide sur celui-ci car il m'a fallu 2 heures jusqu'à maintenant et je n'ai nulle part où.Calcul du pourcentage de la moitié
J'ai un panneau coulissant tactile (similaire à la fonction «glisser vers la droite» que vous obtenez sur les cellules de la table). Voici un diagramme ascii moche
-----------------------------
| Slide | Reveal |
-----------------------------
Vous faites glisser le bit "slide" vers la gauche, pour afficher le bit de révélation. Ce que je veux maintenant faire est de travailler, combien de la révélation est affichée lorsque le toucher se termine, et soit enclencher pour ouvrir ou fermé.
Je sais que le révèle la largeur de la boîte est 110, je peux aussi travailler que si la lame est déplacée vers la gauche par -75, le « pourcentage ouvert » est de 75%
Open Percentage = left/width
Je veux l'animation temps d'être 0,5 secondes du centre. Donc, si vous êtes à 50%, il faut 0,5 secondes pour s'ouvrir, et 49% prend 0,5 secondes pour fermer à proximité (ou environ, je sais que 49% serait un contact sous 0,5 secondes)
De même, si le curseur est seulement 20% d'ouverture, il devrait prendre 0,1 secondes pour se fermer, et 80% d'ouverture est de 0,1 secondes pour ouvrir. Je crois que je dois calculer le décalage de gauche, par rapport à la moitié de la largeur, calculer le pourcentage, puis appliquer ce pourcentage au temps d'animation de 0,5 maximum ... Mais c'est là où je suis coincé. Mise à jour: C'est ce que j'ai réussi à obtenir après un certain chemin et d'erreur, mais il se sent verbeux et désordonné. Définitivement un moyen plus facile!
// Config
let maxAnimationTime = 0.5
// Get left offset
let absLeftOffset = abs(cell.leftContstraint.layoutConstraints[0].constant)
// Get width of action box
let actionBoxWidth = cell.revealView.frame.width
let halfActionBoxWidth = actionBoxWidth/2
// Are we opening or closing?
let snapOpen = absLeftOffset > halfActionBoxWidth
// Calculate the left position relative the half width
let xPos = snapOpen ? absLeftOffset - halfActionBoxWidth : absLeftOffset
// Calculate the percentage of the left percentage relative to the half width
let perc = snapOpen ? abs(xPos - halfActionBoxWidth)/halfActionBoxWidth : xPos/halfActionBoxWidth
// Use the percentage to calculate the animation time to apply
let animationTime = (Double(perc) * maxAnimationTime).round(to: 2)
Si vous connaissez le pourcentage que vous pouvez non seulement utiliser cette valeur pour le temps d'animation? Si elle est inférieure ou égale à 50%, il suffit d'utiliser la valeur en pourcentage pour le temps d'animation et si elle est supérieure à 50, alors utilisez '100 - percentageValue' comme temps d'animation. – Hodson