2016-09-07 1 views
0

я установки тестового проекта (project here) на этот вопрос, чтобы лучше проиллюстрировать мой вопрос, но вот основной вопрос я столкнулся:Как автоматически увеличить размер содержимого в UIScrollView при действии с автозапуском?

У меня есть UILabel вложен в содержание UIView которое само по себе вложенным a UIScrollView, и все это выложено с помощью AutoLayout. Мой первоначальный макет отлично работает, и метка должным образом усечена, чтобы соответствовать ее содержимому, по желанию, с помощью первоначальных ограничений компоновки. Пока все хорошо.

Теперь проблема заключается в том, когда я хочу добавить действие «развернуть» на ярлыке. Предположим, что любое нажатие на представление содержимого должно расширять ярлык таким образом, чтобы больше не было усечения, и вместо того, чтобы усекать внутри границ contentView, я хочу, чтобы scrollViewcontentSize увеличился, чтобы теперь можно было прокручивать текст полной метки. Как я должен это сделать?

В образце проекта нажмите на просмотр содержимого, чтобы отрегулировать все ограничения scrollView, чтобы проиллюстрировать, что на этикетке теперь есть другое пространство для работы. Я застрял в том, как теперь пересчитать scrollView, это contentSize, чтобы метка больше не усекалась.

Я пытался играть с приоритетом сжатия контента, а также изменения, которые основаны на действии делается, например, так:

theLabel.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Vertical) 

Но это, кажется, не на самом деле применять, что метка не будет усечь. Я также попытался сделать недействительным размер внутреннего содержимого scrollView в действии касания, но безрезультатно. Как переключить, следует ли обрезать метку?

ответ

1

Как правило, у вас есть ограничение, которое связывает высоту метки или вида с минимальной высотой, и когда вы хотите развернуть его, отключите его (сделайте его неактивным) и разместите представление. Чтобы сжать, снова включите ограничение и верните представление.

+0

Не знаете, как это отвечает на мой вопрос. Если бы у меня было ограничение минимальной высоты, которое затем было бы отключено при расширении, я до сих пор не вижу, как это решит проблему, что размер содержимого прокрутки не увеличивается, чтобы соответствовать высоте меток, если он не усечен. Я успешно расширяю размер меток вместе со своим представлением родительского контента, но как я могу обеспечить соблюдение метки, не будет усекать? Вы предлагаете вручную вычислять полную высоту и устанавливать для этого ограничение? – BHendricks

+0

Нет, ярлык имеет собственный размер содержимого, ограничение минимальной высоты будет переопределять это или позволить ему вступить в силу. Если вы привязали представление к краям и ширине прокрутки, а затем отложите представления после изменения ограничения, обновите размер содержимого. – Wain

+0

Все еще не уверен, как это отвечает на мой вопрос. Мой 'UILabel' правильно получает размер первоначально в свернутом состоянии через верхний/левый/правый/нижний набор ограничений для его содержимого. Когда я обновляю ограничения родительского представления контента (scrollview) на «expand», я вижу свою проблему, что метка НЕ ​​обновляет размер содержимого ... Я действительно пытаюсь понять, как это ответ на этот вопрос вопрос – BHendricks

 Смежные вопросы

  • Нет связанных вопросов^_^