gpt4 book ai didi

ios - 当行数设置为 0 时 UITextView 内容消失

转载 作者:行者123 更新时间:2023-11-28 23:59:29 25 4
gpt4 key购买 nike

当使用带有长文本的 UITextView 时,我遇到了一个奇怪的行为。特别是,当将其 textContainermaximumNumberOfLines 设置为 0 时,内容会完全消失。

我创建了一个小型测试项目,以确保我的代码中没有任何异常导致它,您可以在屏幕截图中看到它。在我的项目中,我有一个 UIViewController,其中包含一个 UIScrollView,其中包含一个垂直 UIStackView。堆栈 View 包含一个 UITextView(屏幕截图中的红色标题),另一个包含标签、 TextView 、按钮和其他 TextView 的堆栈 View 。

单击按钮时,我将 maximumNumberOfLines 设置为 0(之前是 2),内容就消失了。我试过使用和不使用动画,结果都是一样的。消失似乎与最终文本的高度有关,好像我使用较小的字体,只有在设置更多文本后内容才会消失。

知道为什么会发生这种情况吗?

为了完整起见,我使用 Xamarin.iOS 和 here 是我的 ViewController。

Before

After

最佳答案

内容消失,因为您的文本太大,UIView 对象无法显示。根据这个post我们知道,实际上 UIView 的最大高度和宽度受到它们消耗的内存量的限制。

在我的测试中,如果我们没有为 textView 设置太多字符(删除一些 textView.Text += textView.Text;),内容将显示。我还在 UILabel 上进行了测试,也是如此。因为它们都继承自UIView

如果您确实想显示这么多字符串,请尝试启用textView的ScrollEnabled。不要让textView的Bounds超过最大限制。当你想扩展textView时,你可以尝试添加高度和宽度约束:

var textViewContraints = new NSLayoutConstraint[]
{
NSLayoutConstraint.Create(textView, NSLayoutAttribute.Height, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1f, 700),
NSLayoutConstraint.Create(textView, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1f, 500)
};

UIView.AnimateNotify(1.2d, () =>
{
if (!buttonExpanded)
{
textView.ScrollEnabled = true;
textView.TextContainer.MaximumNumberOfLines = 0;
textView.TextContainer.LineBreakMode = UILineBreakMode.WordWrap;
textView.SizeToFit();
textView.AddConstraints(textViewContraints);
expandButton.Transform = CGAffineTransform.MakeRotation((nfloat)(Math.PI / 2.0f));

textView.Text = "r" + textStr;
textView.Text = textView.Text.Substring(1);
}
else
{
textView.ScrollEnabled = false;
foreach (NSLayoutConstraint constraint in textView.Constraints)
{
textView.RemoveConstraint(constraint);
}
textView.TextContainer.MaximumNumberOfLines = 3;
textView.TextContainer.LineBreakMode = UILineBreakMode.WordWrap;
expandButton.Transform = CGAffineTransform.MakeRotation(0f);

textView.Text = textStr;
}

scrollView.LayoutIfNeeded();
buttonExpanded = !buttonExpanded;
}, null);

关于ios - 当行数设置为 0 时 UITextView 内容消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50001318/

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