Авторазметка: автоматическое обновление ограничений, когда какой-либо вид пуст

У меня есть такая точка зрения

 _______________________________
|     |                         |
|  Label 0                      |
|     ^                         |
|  Label 1                      |
|     ^                         |
|  Label 2                      |
|     ^                         |
|  Label N                      |
|_______________________________|

^ обозначает ограничение, которое связывает вершину Label X+1 с нижней Label X, Label 0 ограничен вершиной суперпредставления с фиксированной константой.

То, что я пытаюсь достичь, это: если некоторые Label X тогда пуст Label X+1 должен занять свое место.

 _______________________________
|     |                         |
|  Label 0 (empty)              |
|     ^                         |
|  Label 1                      |
|     ^                         |
|  Label 2                      |
|     ^                         |
|  Label N                      |
|_______________________________|
               |
               |   The new layout
              \ /
 _______________________________
|     |                         |
|  Label 1                      |  (here it is also Label 0 but is empty)
|     ^                         |
|  Label 2                      |
|     ^                         |
|  Label N                      |
|_______________________________|

Возможно ли это с автоматической разметкой или мне нужно программно проверять пустоту, чтобы обновить ограничения вручную?

Отказ от ответственности: если этот вопрос звучит очень просто, извините, пожалуйста, я перехожу с пружин и стояков, и пока это довольно придирчиво.

1 ответ

Решение

Нужно ли его менять, когда контент виден? Если нет, попробуйте следующее: вы можете сделать обновление в методе viewWillAppear. Для каждого ярлыка звоните

[firstLabel setNumberOfLines:0];
 [firstLabel setText:newProductTitleText];
 [firstLabel sizeToFit];

Установка числа строк в 0 позволяет метке динамически использовать много строк по мере необходимости. Если это пустая метка, которая должна фактически стать 0 строками. Это обновит фреймы, а оставшаяся часть должна позаботиться об остальном.

Другие вопросы по тегам