iPhone: Нарисовать повернутый текст?

6
задан Glorfindel 7 May 2019 в 07:08
поделиться

4 ответа

Оказывается, моя ячейка таблицы была всегда инициализирована высотой 44 пикселя независимо от высоты строки, поэтому весь мой рисунок был обрезан на 44 пикселя от верха ячейки. .

Для рисования ячеек большего размера необходимо было установить autoresizingMask представления содержимого с помощью

cellContentView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

или

cellContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

… и drawRect вызывается с правильным размером. В некотором смысле это имеет смысл, потому что UITableViewCell initWithStyle: reuseIdentifier: не упоминает размер ячейки, и только представление таблицы действительно знает, насколько велика каждая строка будет, исходя из его собственного размера и ответа его делегата на tableView: heightForRowAtIndexPath: .

7
ответ дан 8 December 2019 в 17:23
поделиться

Вы знаете о методе UITableViewDelegate heightForRowAtIndexPath , верно?

Вот простое руководство по различным методам уровня графики. Предполагая, что вы знаете, насколько велик ваш текст, вы сможете соответствующим образом изменить размер строки в табличном представлении.

Кроме того, я бы проверил, что границы после любого преобразования действительно соответствуют вашим ожиданиям. (Для проверки используйте отладчик или оператор журнала).

1
ответ дан 8 December 2019 в 17:23
поделиться

Вот подсказка. Я предполагаю, что вы делаете этот рисунок в drawRect. Почему бы вам не нарисовать рамку вокруг drawRect, чтобы увидеть, насколько велик прямоугольник, и если именно поэтому вы получаете обрезку.

Альтернативой является размещение текста в UILabel, а затем поворот на 90 градусов при создании ячеек в cellForRowAtIndexPath.

2
ответ дан 8 December 2019 в 17:23
поделиться

После того, как я обнаружил, что мне нужно добавить следующее в начало файла, мне понравился подход Мэтта. Очень простой.

#define degreesToRadian(x) (M_PI * (x) / 180.0)

Предложение Махбудза, вероятно, будет вашим путем наименьшего сопротивления. Вы можете повернуть UILabel на 90 градусов следующим образом: [label setTransform: CGAffineTransformMakeRotation (DegreesToRadians (-90.0f))]; Вам просто нужно рассчитать высоту своей ячейки на основе ширины метки. -Matt - Мэтт Лонг, 10 ноября в 0:09

0
ответ дан 8 December 2019 в 17:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: