Как написать контент, обнимающий приоритет внутреннего размера в формате визуального языка?


Я пытаюсь поместить две метки рядом с помощью Autolayout-левая метка-это имя поля, а правая - это значение. Я пишу ограничения в формате визуального языка.

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

Я ожидаю, что моя строка VLF будет выглядеть примерно так:

H:|-20-[leftLabel(==intrinsicContentWidthGoesHere@1000)]-20-[rightLabel]-20-|
1 3

1 ответ:

Вы не можете этого сделать. Есть Много вещей, которые не могут быть выполнены в синтаксисе визуального формата; это только одна из них. Синтаксис визуального формата хорош для того, для чего он хорош, но он может выполнять только довольно небольшое подмножество наиболее часто необходимых настроек, на которые способны ограничения. Приведу еще один пример: вы не можете использовать его для установки ограничения центра.

Нет ничего плохого в смешивании и сопоставлении синтаксических ограничений визуального формата с одиночными ограничениями или другие команды ограничения. В вашем случае просто отправьте в представление команду setContentCompressionResistancePriority:forAxis: или команду setContentHuggingPriority:forAxis: и двигайтесь дальше.