Содержимое исчезает, потому что ваш текст слишком велик для объекта UIView
.Согласно этой записи мы знаем, что на самом деле UIView
имеет максимальную высоту и ширину, ограниченную количеством используемой ими памяти.
В моем тесте, если мы не установим слишком много символов в textView
(удалите некоторые textView.Text += textView.Text;
), содержимое будет отображаться.И я также проверил это на UILabel
, тоже самое.Поскольку все они наследуются от UIView
.
Если вы хотите показать так много строк, попробуйте включить textView в ScrollEnabled
.Не позволяйте границам textView превышать максимальный предел.Вы можете попытаться добавить ограничения высоты и ширины, когда хотите развернуть 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);