Итак, у меня есть настройка моего представления в IB, чтобы эта текстовая метка совпадала с верхней частью миниатюры с помощью ограничений.Вертикально выровнять текст UILabel с ограничениями и без обертки (автоматическая компоновка, одна строка)
Однако, как мы знаем, вы не можете вертикальное выравнивание текста в UILabel. В моем тексте обновляется размер шрифта в зависимости от длины содержимого. Полноразмерный текст выглядит великолепно, в то время как небольшой текст значительно ниже на экране.
existing solution включает либо вызова sizeToFit или обновления кадра UILabel, чтобы соответствовать высоте текста. К сожалению, последнее (хотя и уродливое) решение плохо работает с ограничениями, когда вы не должны обновлять фрейм. Первое решение в основном не работает, когда вам нужно иметь автозапуск текста, пока он не обрезается. (Таким образом, он не работает с ограниченным числом строк и автозагрузкой).
Теперь о том, почему внутренний размер (высота) uilabel не обновляется, как это делает ширина, когда он установлен в натуральном размере с помощью «Размер, соответствующий содержанию», находится вне меня. Похоже, это определенно должно, но это не так.
Так что мне осталось искать альтернативные решения. Насколько я вижу, вам может потребоваться установить ограничение высоты на метке и отрегулировать константу высоты после вычисления высоты текста. У кого-то есть хорошее решение?
@ hans-sjunnesson: вы пробовали автоматическую усадку с базовой настройкой 'None'? –
@ JörnEyrich, в то время как текст будет прикреплен к верхней части рамки, фактический кадр UILabel не сжимается вверх. Это означает, что если у вас есть, скажем, суб-метка под ним, суб-метка не будет следовать этикетке вверх, поскольку она сжимается. –
Проверьте http://stackoverflow.com/a/4942766/1039901 –