Так что я недавно создавал то, что Apple calls a leaf-level view (кнопка), и поэтому я следил за документами от Apple, чтобы реализовать -intrinsicContentSize
, и все работало (хотя код был немного странным - у меня были ограничения, установленные в моем -updateConstraints
метод для размещения подзонов, а также код в методе -intrinsicContentSize
, чтобы рассчитать, какой должен быть общий размер, и я чувствовал, что предоставляю дублирующую информацию в систему автоотключения).Жесткие ограничения против `-intrinsicContentSize`
Однако, я также столкнулся с post on here, заявляя, что вместо использования -intrinsicContentSize
использовать жесткие ограничения, а затем автоматически будет изменять размер содержимого, чтобы он соответствовал содержащимся в нем представлениям. Я также реализовал это и достиг того же результата, что и выше, но на этот раз я не чувствовал, что я дублировал переданную информацию (я просто послал прямые ограничения). Обратите внимание, что я вижу представление, как описано в упомянутой выше записи, как так называемый вид на уровне листа, поскольку он не звучит так, как будто бы к нему добавилось другое представление.
Какая реализация изменения размера контейнера на основе содержимого внутри него является правильным способом?
В настоящее время я склоняюсь к второму методу, в связи с тем, что я не думаю, что я должен посылать дублирующую информацию, однако документация Apple, говорит, что в противном случае (опять же, документы от Apple может быть немного запутанным/вводящий в заблуждение время от времени).
Sidenote о моей конкретной ситуации, е это важно: у меня есть два подвидов в моей кнопки, одна из которых изображение, другой ярлык. Изображение получает его размер от метки, а затем всю кнопку с изображения (так косвенно, размер зависит полностью от метки).
Если у вашего представления есть подпункты, это не вид листа. –
@KenThomases справедливая точка - я могу легко использовать слои (которые просто убирают нелистость из UIKit и помещают его в QuartzCore, или используют '-drawRect' для отображения моего контента), но тот вопрос, который я задаю, вызывает озабоченность ... – DanZimm
@KenThomases Кроме того, для записи Apple использует пример кнопки 'button' в качестве представления на уровне листа, подразумевая, что' UIButton' - это представление уровня листа, но в документах 'UIButton' есть очевидная 'UILabel' (на самом деле' UIButtonLabel'), который используется для отображения текста (который является подвью) – DanZimm