gpt4 book ai didi

ios - UITextView 动画框架变化不会动画文本重新分配

转载 作者:可可西里 更新时间:2023-11-01 03:33:13 24 4
gpt4 key购买 nike

我有一个 UITextView,我正在尝试在用户点击按钮时为框架的变化设置动画。基本上, TextView 会变大以适应屏幕,因此它可以显示更多文本,然后当用户再次点击按钮时,它会缩小到原来的框架。

我使用 block 执行动画,如下所示:

if(!isDisplayingDetailView)
{
//Expand view
[UIView animateWithDuration:0.5
animations:^{
self.detailView.frame = self.view.frame;
}
completion:^(BOOL finished){
isDisplayingDetailView = YES;
}];
}
else{
//Shrink view.
[UIView animateWithDuration:0.5
animations:^{
self.detailView.frame = self.detailFrame;
}
completion:^(BOOL finished){
isDisplayingDetailView = NO;
}];
}

其中 self.detailView 是 UITextView,而 self.detailFrame 只是一个包含原始框架的 CGRect。 isDisplayingDetailView 只是一个 BOOL,用于检查 View 是否展开。我的问题是文本调整大小没有动画效果。我从测试应用程序中截取了一些屏幕截图来说明我的问题:应用默认 View : Default view

扩展 View :

Expanded view

点击按钮后的 TextView :

Shrinking view

如您所见,文本自动缩小到最终帧大小,没有任何类型的动画,而边界仍然是动画。我想这是正确的行为,但我想知道是否可以为文本及其 View 设置动画。

最佳答案

TextView 中的文本并不总是按预期运行。为此,您必须设置一个 NSTimer 并在每个刻度上设置帧大小。

做类似的事情:

textview.frame = CGRectMake (textview.frame.origin.x, textview.frame.origin.y, textview.frame.size.width-1, textview.frame.size.height-1);

然后当它完成时,我将从 superview 中完全删除 textview 并将其设置为 nil,然后初始化一个新的。这样做的原因是,当出于某种原因更改 TextView 的框架时,会在文本框周围添加填充。您不会注意到它,除非您至少更改框架 100 次。

[textview removeFromSuperview];
textview = nil;
textview = [[UITextView alloc] initWithFrame:CGRectMake(x, y, width, height)];
textview.text = yourTextString;
//You will also have to set whatever non default properties you want, such as text or background color
[view addSubview:textview];

关于ios - UITextView 动画框架变化不会动画文本重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com