я установки тестового проекта (project here) на этот вопрос, чтобы лучше проиллюстрировать мой вопрос, но вот основной вопрос я столкнулся:Как автоматически увеличить размер содержимого в UIScrollView при действии с автозапуском?
У меня есть UILabel
вложен в содержание UIView
которое само по себе вложенным a UIScrollView
, и все это выложено с помощью AutoLayout. Мой первоначальный макет отлично работает, и метка должным образом усечена, чтобы соответствовать ее содержимому, по желанию, с помощью первоначальных ограничений компоновки. Пока все хорошо.
Теперь проблема заключается в том, когда я хочу добавить действие «развернуть» на ярлыке. Предположим, что любое нажатие на представление содержимого должно расширять ярлык таким образом, чтобы больше не было усечения, и вместо того, чтобы усекать внутри границ contentView
, я хочу, чтобы scrollView
contentSize
увеличился, чтобы теперь можно было прокручивать текст полной метки. Как я должен это сделать?
В образце проекта нажмите на просмотр содержимого, чтобы отрегулировать все ограничения scrollView
, чтобы проиллюстрировать, что на этикетке теперь есть другое пространство для работы. Я застрял в том, как теперь пересчитать scrollView
, это contentSize
, чтобы метка больше не усекалась.
Я пытался играть с приоритетом сжатия контента, а также изменения, которые основаны на действии делается, например, так:
theLabel.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Vertical)
Но это, кажется, не на самом деле применять, что метка не будет усечь. Я также попытался сделать недействительным размер внутреннего содержимого scrollView
в действии касания, но безрезультатно. Как переключить, следует ли обрезать метку?
Не знаете, как это отвечает на мой вопрос. Если бы у меня было ограничение минимальной высоты, которое затем было бы отключено при расширении, я до сих пор не вижу, как это решит проблему, что размер содержимого прокрутки не увеличивается, чтобы соответствовать высоте меток, если он не усечен. Я успешно расширяю размер меток вместе со своим представлением родительского контента, но как я могу обеспечить соблюдение метки, не будет усекать? Вы предлагаете вручную вычислять полную высоту и устанавливать для этого ограничение? – BHendricks
Нет, ярлык имеет собственный размер содержимого, ограничение минимальной высоты будет переопределять это или позволить ему вступить в силу. Если вы привязали представление к краям и ширине прокрутки, а затем отложите представления после изменения ограничения, обновите размер содержимого. – Wain
Все еще не уверен, как это отвечает на мой вопрос. Мой 'UILabel' правильно получает размер первоначально в свернутом состоянии через верхний/левый/правый/нижний набор ограничений для его содержимого. Когда я обновляю ограничения родительского представления контента (scrollview) на «expand», я вижу свою проблему, что метка НЕ обновляет размер содержимого ... Я действительно пытаюсь понять, как это ответ на этот вопрос вопрос – BHendricks