Я не думаю, что вы могли бы сделать это таким образом. Если вы сделали макет для метки 2 основанным на ограничении расстояния от метки 1, даже если вы сделали авто-свертку метки 1 до нулевой высоты, когда у нее нет содержимого, метка 2 все равно будет на таком расстоянии вниз, то есть в:
+----------------+
| +------------+ |
| + label 1 | |
| +------------+ |
| ^ |
| ^ !
| +------------+ |
| | label 2 | |
| +------------+ |
+----------------+
Где ^ - ограничение расстояния для автоматического размещения - Если Метка 1 знает, как стать нулевой высотой, когда строка пуста, вы все равно получите:
+----------------+
| +------------+ |
| ^ |
| ^ !
| +------------+ |
| | label 2 | |
| +------------+ |
+----------------+
Может быть это возможно, если создать NSLayoutConstraint вручную. Вы можете сделать второй атрибут высотой метки 1, установить постоянный ноль, а затем тщательно рассчитать, каким будет множитель, чтобы расстояние было тем, что вы хотите, основываясь на кратном ненулевой высоте метки.
Но, сделав все это, вы теперь закодировали подкласс NSLabel, который автоматически изменяет размеры, создали объект ограничения вручную, а не через визуальный язык, и согнули NSLayoutConstraint сверх его воли.
Я думаю, вам лучше просто поменять рамку метки 2, если строка метки 1 пуста!