ver usar marcar manejar los festivos dias como calendario aprender ios objective-c core-animation uianimation

usar - Cómo utilizar la curva de UIAnimation de iOS7 predeterminada



como usar iphone 7 (2)

Las animaciones de iOS7 no se comportan de la misma manera que en iOS6. Parece que usan una curva bezier diferente. Donde iOS6 usa un tipo de curva de "easInOutSine", iOS7 es más del tipo "easeInOutExpo". ( http://matthewlein.com/ceaser/ )

¿Hay alguna manera de usar esa curva? Quiero sincronizar mis animaciones cuando el teclado se abre / cierra.


Actualización, corregido en 7.1. Ya no es necesario.

Por la razón que sea, la curva de animación informada en el despido del teclado es incorrecta. Parece ser en realidad 6 << 16 en lugar de 7 << 17.

Esto es lo que hago con UIKeyboardWillChangeFrameNotification para determinar qué curva de animación usar.

NSDictionary *keyboardAnimationDetail = [notification userInfo]; CGRect keyboardEndFrameWindow = [keyboardAnimationDetail[UIKeyboardFrameEndUserInfoKey] CGRectValue]; double keyboardTransitionDuration = [keyboardAnimationDetail[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; // gives incorrect value of 7 on dismissal // UIViewAnimationCurve keyboardTransitionAnimationCurve = [keyboardAnimationDetail[UIKeyboardAnimationCurveUserInfoKey] integerValue]; CGRect keyboardEndFrameView = [self.view convertRect:keyboardEndFrameWindow fromView:nil]; CGFloat newConstant = (self.view.frame.size.height - keyboardEndFrameView.origin.y); [UIView animateWithDuration:keyboardTransitionDuration delay:0.0f options:newConstant == 0 ? (6 << 16) : (7 << 16) animations:^{ self.tableView.contentInset = UIEdgeInsetsMake(self.tableView.contentInset.top, 0, self.view.frame.size.height - keyboardEndFrameView.origin.y + self.commentToolbar.frame.size.height, 0); self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(self.tableView.scrollIndicatorInsets.top, 0, self.view.frame.size.height - keyboardEndFrameView.origin.y + self.commentToolbar.frame.size.height, 0); self.commentViewToSuperviewBottomConstraint.constant = (self.view.frame.size.height - keyboardEndFrameView.origin.y); [self.view layoutIfNeeded]; } completion:^(__unused BOOL finished){ }];

Básicamente, determino si el marco del teclado se está ocultando al ver si el nuevo origen y está justo fuera del marco de nuestra vista ( newConstant ). Luego, basándome en eso, uso 6 o 7:

newConstant == 0 ? (6 << 16) : (7 << 16)

El resto es simplemente ajustar mi tableView contentInset y scrollIndicatorInsets , así como cambiar la constante en la barra de herramientas que se mueve con el teclado.


Así es como lo hago (al menos cuando el teclado está a punto de ser mostrado)

- (void)keyboardWillShow:(NSNotification *)notification { NSDictionary *keyboardAnimationDetail = [notification userInfo]; UIViewAnimationCurve animationCurve = [keyboardAnimationDetail[UIKeyboardAnimationCurveUserInfoKey] integerValue]; CGFloat duration = [keyboardAnimationDetail[UIKeyboardAnimationDurationUserInfoKey] floatValue]; [UIView animateWithDuration:duration delay:0.0 options:(animationCurve << 16) animations:^{ // Set the new properties to be animated here } completion:nil]; }

Obtiene la curva de animación de la notificación del teclado como de costumbre y la traduce a una opción de animación con un desplazamiento de bits.