4

我有一个 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 动画时跟踪它的高度?

4

3 回答 3

3

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

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

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

这是我的第一篇文章,我真的不太了解任何事情,只是学习并尝试提供帮助。

于 2013-08-04T02:49:15.327 回答
1

这取决于你想用这个东西做什么。

如果您想以某种方式获得有关框架的准确信息,请使用presentationLayer. 这是屏幕上实际内容的半准确表示。注意这是在view的坐标(bounds)中,所以需要将其转换为superview的坐标系才能得到当前帧。

CGRect currentTextViewFrame = [_textView.superview convertRect:[_textView.layer.presentationLayer frame] fromView:_textView];

但是请注意,这将是一个或更多的绘图循环。如果您尝试以此为基础制作另一个动画,则可能会出现问题,并可能导致闪烁或其他延迟引起的效果。此外,至少官方文档说这可能并不总是很快,如果由于性能原因经常需要此信息,您可能希望自己制作动画。

于 2013-07-31T03:17:02.587 回答
0
[_textView.layer.presentationLayer frame].size.height;

信用属于这个回答者

于 2014-04-17T04:28:37.873 回答