Оказывается, моя ячейка таблицы была всегда инициализирована высотой 44 пикселя независимо от высоты строки, поэтому весь мой рисунок был обрезан на 44 пикселя от верха ячейки. .
Для рисования ячеек большего размера необходимо было установить autoresizingMask
представления содержимого с помощью
cellContentView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
или
cellContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
… и drawRect
вызывается с правильным размером. В некотором смысле это имеет смысл, потому что UITableViewCell
initWithStyle: reuseIdentifier:
не упоминает размер ячейки, и только представление таблицы действительно знает, насколько велика каждая строка будет, исходя из его собственного размера и ответа его делегата на tableView: heightForRowAtIndexPath:
.
Вы знаете о методе UITableViewDelegate heightForRowAtIndexPath , верно?
Вот простое руководство по различным методам уровня графики. Предполагая, что вы знаете, насколько велик ваш текст, вы сможете соответствующим образом изменить размер строки в табличном представлении.
Кроме того, я бы проверил, что границы после любого преобразования действительно соответствуют вашим ожиданиям. (Для проверки используйте отладчик или оператор журнала).
Вот подсказка. Я предполагаю, что вы делаете этот рисунок в drawRect. Почему бы вам не нарисовать рамку вокруг drawRect, чтобы увидеть, насколько велик прямоугольник, и если именно поэтому вы получаете обрезку.
Альтернативой является размещение текста в UILabel, а затем поворот на 90 градусов при создании ячеек в cellForRowAtIndexPath.
После того, как я обнаружил, что мне нужно добавить следующее в начало файла, мне понравился подход Мэтта. Очень простой.
#define degreesToRadian(x) (M_PI * (x) / 180.0)
Предложение Махбудза, вероятно, будет вашим путем наименьшего сопротивления. Вы можете повернуть UILabel на 90 градусов следующим образом: [label setTransform: CGAffineTransformMakeRotation (DegreesToRadians (-90.0f))]; Вам просто нужно рассчитать высоту своей ячейки на основе ширины метки. -Matt - Мэтт Лонг, 10 ноября в 0:09