Эй, у меня есть UITextView
внутри UIView
, который я динамически загружаю с контентом. Я изменяю размер текстового представления с помощью this solutionИзменить размер UIView для обертывания содержимого с отключенной автоматической компоновкой
У меня отключена автоматическая компоновка, чтобы это можно было работать (другие решения, такие как sizeToFit()
, не работали с автоматическим расположением макета ON), но когда я это делаю, даже если весь контент текстового представления делает рендеринг, он переполняет границы его содержания UIView
.
Я попытался использовать то же решение, что и для текстового вида на его контейнере, но это ничего не делало.
Одна вещь, которая, кажется, работает это:
newFrame = containerView.frame
newFrame.size.height = textView.frame.size.height
containerView.frame = newFrame
Но это не то, что мне нужно сог я буду также иметь несколько меток в этом виде контейнера так что высота не может быть так же как текстовое поле.
Есть ли способ исправить это, не включив автомасштабирование снова? (Будет ли автоматическая компоновка при помощи даже помощи?) И если поворот авто макета будет исправлен, то есть ли способ сохранить динамический размер текстового вида (coz его включение будет нарушить это)?
Я новичок в этом. Цените помощь.
О, и я фактически разрабатываю приложение tvOS, а не iOS. Не знаю, если это имеет значение.
EDIT:
Вот фактический код:
@IBOutlet weak var container: UIView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var text: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
print(text.frame.origin.x, text.frame.origin.y)
text.scrollEnabled = false
text.text = "bla blah blah blah boo boo boo boooooo boo blah yo yo yo yo yo hello"
let fixedWidth = text.frame.size.width
let newSize = text.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
var newFrame = text.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
text.frame = newFrame
}
Это динамически расширяет представление текста при изменении содержимого. Добавление:
newFrame = containerView.frame
newFrame.size.height = textView.frame.size.height
containerView.frame = newFrame
изменяет размер контейнера UIView
, но делает text.frame.origin.y
в текстовом 0. Таким образом, добавление каких-либо других элементов в контейнере просто перекрывается с точки зрения текста.
Так что я должен на самом деле жестко кодировать заполнение, которое у меня есть между моими различными компонентами и как добавить их вместе? Это не очень чисто правильно? Я не получил бит вертикальных ограничений. Это что-то, что я могу использовать в UIView, чтобы динамически изменять размер? – alokraop
Непонятно, но перед автозапуском это был только вариант. Вы можете жестко зафиксировать постоянную часть непосредственно до 45. Для Autolayout вы можете пройти через https://www.raywenderlich.com/110393/auto-layout-visual-format-language -tutorial –
эй, поэтому добавление высоты с прокладкой не получилось. Оказывается, что присвоение высоты текстового вида контейнеру каким-то образом изменяет начало текстового вида, поэтому оно будет перекрываться с любыми другими элементами управления над ним. Не знаю, почему. – alokraop