Iphone 跟踪视图帧更改动画

Iphone 跟踪视图帧更改动画,iphone,ios,objective-c,ios6,uiview,Iphone,Ios,Objective C,Ios6,Uiview,我有一个UITextView,它使用animateWithDuration:animations方法更改其帧: [UIView animateWithDuration:1.5 animations:^{ [_textView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - keyboardSize.height-25)]; }]; 是否有任何回调函数可以帮助我在UIT

我有一个UITextView,它使用
animateWithDuration:animations
方法更改其帧:

[UIView animateWithDuration:1.5 animations:^{
    [_textView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - keyboardSize.height-25)];
}];

是否有任何回调函数可以帮助我在UITextView制作动画时跟踪其高度?

这取决于您想对其执行什么操作

如果您希望获得有关帧的准确信息,请使用
presentationLayer
。这是屏幕上实际显示内容的半精确表示。请注意,这是在视图的坐标(边界)中,因此需要将其转换为superview的坐标系以获取当前帧

CGRect currentTextViewFrame = [_textView.superview convertRect:[_textView.layer.presentationLayer frame] fromView:_textView];
但请注意,这将是一个或多个图形循环。如果试图以此为基础创建另一个动画,则可能会出现问题,并可能导致闪烁或其他延迟诱导的效果。此外,至少官方文件说,这可能并不总是很快,如果出于性能原因经常需要这些信息,您可能希望自己制作动画。

没有准确的方法。 这是因为帧是直接设置的。动画负责过渡,但实际上没有过渡

有一些方法可以估计当前帧的大小,对我来说,最好的方法是在动画开始和动画持续时间时使用计时器的简单数学解决方案

但是,再次强调,如果您选择另一种方式可能是最好的,因为这肯定会影响您的代码成本和精度

这是我的第一篇文章,我对任何事情都不太了解,只是学习和尝试帮助

[_textView.layer.presentationLayer frame].size.height;

信用属于你。

我很确定没有。你到底想做什么?您可能需要根据高度变化的程度和变化所需的时间来计算高度。不要这样做!缓和函数并不总是线性的,因此这种方法不起作用。制作自定义动画或查看我的答案。为什么要在动画期间寻找跟踪文本字段帧的方法?