Оказывается, что ячейка моей таблицы была всегда инициализирована высотой 44px независимо от высоты строки, поэтому весь мой рисунок был обрезан на 44px от вершины ячейки.
Чтобы нарисовать более крупные ячейки, необходимо было установить в представлении содержимого autoresizingMask
с помощью
cellContentView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
или
cellContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
… и drawRect
вызывается с правильным размером. В некотором смысле это имеет смысл, потому что UITableViewCell
initWithStyle:reuseIdentifier:
не упоминает размер ячейки, и только табличное представление фактически знает, насколько большой будет каждая строка, основываясь на ее собственном размере и ее размере. Ответ делегата на tableView:heightForRowAtIndexPath:
.
Я читал Руководство по программированию Quartz 2D , пока модель и функции рисования не стали понятны, и код для рисования моего повернутого текста стал простым и очевидным:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextRotateCTM(context, -(M_PI/2));
[_cell.number drawAtPoint:CGPointMake(-57.0, 5.5) withFont:[UIFont fontWithName:@"Helvetica-Bold" size:16.0]];
CGContextRestoreGState(context);
Спасибо за советы, похоже, у меня все готово.