Причина, по которой исходный код автора не работает, заключается в том, что кажется, что рамка textLabel установлена после того, как UITableViewCell был возвращен из вашего метода делегата.
Я заметил, что могу успешно изменить многие свойства textLabel, такие как выравнивание текста, цвет, шрифт и т. Д., Но изменение фрейма не имеет никакого эффекта, и когда я печатаю фрейм в отладчике позже (как при выборе) , кадр не то, что я установил. Поэтому я делаю вывод, что инфраструктура UIKit изменяет фрейм textLabel после того, как он возвращается из метода делегата. Без сомнения, это, вероятно, сделано, потому что инженеры Apple хотели убедиться, что ваш текст был нарисован на экране, поэтому они измеряют его и изменяют кадр так, чтобы он подходил. Вероятно, они полагали, что такие люди, как мы, которые хотели бы изменить положение текста, могли бы сделать это путем создания подклассов или просто добавив другую UILabel (или что-то еще) в качестве подпредставления. Начинающему разработчику может быть очень трудно, если его текст не отображается на ярлыке или был усечен из-за того, что он не настроил рамку.
В моем случае я хотел, чтобы текст располагался по центру по горизонтали, был определенного цвета / шрифта / размера и немного выше по вертикали в ячейке. Будучи слишком ленивым, чтобы создать подкласс, я сначала попытался изменить кадр. Когда это не сработало, я попытался найти ответ (нашел этот пост).
Мое окончательное решение состояло в том, чтобы установить для свойства numberOfLines значение 0 и добавить некоторые возвраты каретки к моему тексту. Теперь ЭТО лениво.