Ios 将动画与带有附件视图的键盘顶部同步
我有一个带有附件视图的Ios 将动画与带有附件视图的键盘顶部同步,ios,objective-c,animation,Ios,Objective C,Animation,我有一个带有附件视图的UITextField。我还有另一个视图位于屏幕底部。我想让这个视图像键盘上显示的那样动画化,我已经多次使用ui键盘willshownotification。但是,这次有点特别,因为我希望底部视图跟随键盘顶部,而不是附件视图的顶部 显然,我已经尝试过这种解决方案: [UIView animateWithDuration:keyboardAnimationDuration delay:0 options:keyboardAnimationCurve animations:^{
UITextField
。我还有另一个视图位于屏幕底部。我想让这个视图像键盘上显示的那样动画化,我已经多次使用ui键盘willshownotification
。但是,这次有点特别,因为我希望底部视图跟随键盘顶部,而不是附件视图的顶部
显然,我已经尝试过这种解决方案:
[UIView animateWithDuration:keyboardAnimationDuration delay:0 options:keyboardAnimationCurve animations:^{
viewBottomConstraint.constant = keyboardHeight - accessoryViewHeight;
[self.overviewViewController.view layoutIfNeeded];
} completion:nil];
(keyboardAnimationDuration
、keyboardAnimationCurve
和keyboardHeight
都来自键盘通知的userInfo
字典)
此解决方案为我提供了底部视图的正确结束位置,但动画稍微关闭,因为键盘(包括附件视图)必须在相同的持续时间内移动更长的距离(到附件视图顶部,而不是到键盘顶部)
我考虑过为我的底部视图计算相对动画持续时间,如下所示:
keyboardToAccessoryRatio = (keyboardHeight - accessoryViewHeight) / keyboardHeight
relativeDuration = keyboardAnimationDuration * keyboardToAccessoryRatio
然后让动画以keyboardAnimationDuration-relativeDuration
的延迟开始。然而,这只有在键盘使用uiviewmanimationoptioncurvelinear
曲线时才能很好地工作,但实际上,它使用的是uiviewmanimationcurveeaseinout
那么还有其他建议吗
另外,我不能简单地将我的按钮视图添加到附件视图中,因为它们实际上位于单独的视图控制器中。动画是作为
UIViewControllerAnimatedTransitioning
类中自定义转换的一部分完成的。最后我放弃并添加了附件视图作为常规视图,该视图是我按照键盘创建的。最后我放弃并添加了附件视图作为常规视图,该视图是我按照键盘创建的。请理解,您可以对动画(如0.5或1)进行一些延迟,然后查看它是否适合。由于动画曲线,即使经过仔细计算,它也不适合。据我所知,您可以对动画(如0.5或1)进行一些延迟,然后查看它是否适合。由于动画曲线,即使经过仔细计算,它也不适合。