Как стать автором
Обновить

Комментарии 7

Очень странно видеть статью про интерфейс, в которой НИ ОДНОЙ иллюстрации.

Извините, я конечно же знал на что шел когда писал статью. Я сделал упор на то что все люди работающие с Interface Builder уже знают где и что находится. Статья больше представляет собой теоретический гайд по Auto Layout и больше предназначен для устранения множества вопросов у изучающих, которые уже знают что и где, но не знают как этим правильно пользоваться.
Я вот столкнулся с проблемой, что TableView не могу разместить в ScrollView. Еще не до конца понимаю всю систему) Говорит что ambiguous height, почему TableView не может быть растянут на содержимое, scrollable отключал. Читать и еще раз читать надо, и любой материал по сути своей полезен.
Я только что попробовал установить TableView в ScrollView как вы сказали, у меня вполне получилось. Я просто расположил TableView по центру ScrollView и через меню Resolve Tools -> Add Missing Constraints для всех Views и все нормально вписалось. Может быть вы хотите как-то по другому? Если мой комментарий вам помог, тогда советую посмотреть какие constraints вам нужно было установить для нормального отображения.
Add Missing Constraints как оказалось добавляет кучу не нужного мусора, причем фиксированного, что не подходит для разных размеров экрана. Но все же добавил TableView в ScrollView, переделав полностью весь View. Высота статичная у TableView и через Swift буду программно менять высоту относительно контента, который расположен внутри. Количество элементов в TableView маленькое, поэтому посмотрю как будет, до поиска других вариантов решения.
Add Missing Constraints в большинстве своем служит для того что бы разработчик увидел, каких ему может не хватать constraints или для простых вещей вроде центровки UILabel внутри UIView.
Не забывайте, что вы можете сами задавать и менять constraints программно или через IB, к этому относится и прописывание соотношений или формул для подобных целей.
И мне кажется, что динмическое изменение высоты через код, самый простой и удобный способ.
Работа с Auto Layout по большей части креативная и требует экспериментов, после которых вы сможете создавать любые интерфейсы без особых проблем.
При размещении чего либо в ScrollView с использованием auto layout стоит понимать всего один нюанс. Это то что у ScrollView есть два размера — внешний (размер самого ScrollView) и внутренний (размер контента). Собственно нельзя растянуть что то внутри ScrollView по ширине (или высоте) потому что у ScrollView нет четких значений высоты и ширины, они зависят от элементов внутри. ambiguous height — как раз и значит что высота не может быть высчитана.

Конкретно в вашем случае вы пытаетесь прировнять высоту таблицы к высоте контента ScrollView, а она в свою очередь считается по единственному элементу внутри — таблице и вы попадаете в рекурсию)
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории