我有一个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的动画高度?
答案 0 :(得分:3)
没有准确的方法。 那是因为框架只是直接设置。动画负责转换,但实际上没有过渡。
有一些估算当前帧大小的方法,对我来说,最好的是使用计时器的简单数学解决方案,动画开始时和动画持续时间。
但是,如果你只是采取另一种方式,它可能是最好的,因为这肯定会影响你的代码成本和精度。
这是我的第一篇文章,我真的不知道什么,只是学习并试图提供帮助。
答案 1 :(得分:1)
这取决于你想用这件事做什么。
如果您想要以某种方式准确了解您的相框信息,请使用presentationLayer
。这是对屏幕上实际内容的半精确表示。请注意,这是在视图的坐标(边界)中,因此您需要将其转换为超视图的坐标系以获取当前帧。
CGRect currentTextViewFrame = [_textView.superview convertRect:[_textView.layer.presentationLayer frame] fromView:_textView];
但请注意,这将是关于一个绘图循环或更多关闭。如果您试图将另一个动画作为基础,则可能会出现问题,并可能导致闪烁或其他延迟引起的影响。此外,至少官方文档说这可能并不总是非常快,如果您出于性能原因需要这些信息,您可能希望自己制作动画。
答案 2 :(得分:0)
[_textView.layer.presentationLayer frame].size.height;
积分属于this anwser。