Я хотел бы добавить тень в текст, нарисованный с использованием метода категории NSString (UIStringDrawing)
, представленного iOS:
- (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width
withFont:(UIFont *)font minFontSize:(CGFloat)minFontSize
actualFontSize:(CGFloat *)actualFontSize
lineBreakMode:(UILineBreakMode)lineBreakMode
baselineAdjustment:(UIBaselineAdjustment)baselineAdjustment;
Ясно, что нет опции тени.
Да, здесь можно использовать UILabel и получить свойства теневой тени, но это не будет таким же результативным, поскольку любой подкласс UIView (такой как UILabel) обертывает объект CALayer и будет более тяжелым (производительность).
Здесь контекст:
Я делаю собственный чертеж для подкласса UITableViewCell, реализуя drawRect:
в представлении ячейки таблицы вместо создания ячейки таблицы из файла Nib скомпонованных подклассов UIView.
Составление кучи подклассов UIView приведет к победе в попытке сохранить этот пост и оставаться в пределах 50-60 кадров в секунду в производительности прокрутки таблицы.
Я попытался дважды рисовать строку с небольшим смещением. Это может оказаться приемлемым после того, как я подкорректирую цвет тени на цвет фона ячейки, который я собираюсь, но это кажется довольно kludgey. Конечно, нет никакого свойства размытия тени, как это получается с UILabel.
Я искал решения, и они либо рекомендуют использование UILabel (которое я отклонил в соответствии с приведенным выше, так как у меня есть около десятка различных текстовых элементов, которые будут скомпонованы на представление ячейки таблицы) или CGContextSetShadow()
. Последнее всегда предлагается в контексте прямоугольных форм и необязательно для привязки тени к пути текста, нарисованного непосредственно с помощью метода NSString drawAtPoint...
, упомянутого выше. (Я действительно пытался это сделать, но он не работал (т.е. Ничего не менялся), я новичок в графике Core Graphics).
Предложения?