Вот пример, следующий за тем, что вы хотите:
Во-первых, UIStackView действительно усложнит ситуацию, потому что мы хотимнастроить расстояние между каждой меткой.Я просто использовал начальные и конечные ограничения для размещения каждой метки в строке.
Хитрость заключается в том, чтобы установить правильный приоритет сопротивления сжатию контента и приоритет объятия контента для каждогоэтикетка.Во-первых, мы хотим, чтобы 0s всегда соответствовал размеру его контента, поэтому мы устанавливаем приоритет сопротивления сжатию контента на 1000. Приоритет объятия контента может оставаться по умолчанию равным 250.
Я такжеразделите знак @ на его собственную метку, поскольку мы всегда хотим, чтобы он появлялся.Установите для него приоритет сопротивления сжатию контента на 1000 и оставьте приоритет объятия контента равным 250.
Далее, для shrink_label мы установили приоритет сопротивления сжатию контента на 749, а приоритет объятия контента на1000. То есть, мы хотим, чтобы shrink_label никогда не пытался расти больше, чем его размер текстового содержимого, и мы хотим, чтобы он позволял сжимать его содержимое, если нам нужно.
Наконец,для laaabel мы устанавливаем приоритет объятия контента равным 1000, а приоритет сопротивления сжатию контента - 750. Таким образом, метка будет занимать столько места, сколько может, и, поскольку ее приоритет сопротивления сжатию на 1 вышечем shrink_label , shrink_label будет сжиматься до laaabel .
Вы можете прочитать о сжатии контента и обнимании контента в Appleдокументы здесь:
https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/ViewswithIntrinsicContentSize.html
Полный исходный код для моего примера приложения доступен здесь:
https://github.com/elliotfiske/StackOverflowContentHuggingExample