Добавление тени к тексту NSString в методе drawRect: без использования UILabel

I ' Я бы хотел добавить тень к тексту, нарисованному с использованием поставляемого iOS метода категории NSString (UIStringDrawing) :

- (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 кадров в секунду при прокрутке табличного представления.

Я дважды пытался нарисовать струну с небольшим смещением. Это может оказаться приемлемым, если я настрою цвет тени на цвет фона ячейки, которая у меня есть, но это кажется довольно беспорядочным. Конечно, нет свойства размытия тени, как в случае с UILabel.

Я искал решения, и они либо рекомендовали использование UILabel (что я отклонил, как указано выше, поскольку у меня есть около дюжины отдельных текстовых элементов, которые накладываются на таблицу) вид ячейки) или CGContextSetShadow () . Последнее всегда предлагается в контексте прямоугольных форм и не обязательно для добавления тени к пути текста, нарисованного непосредственно с помощью NSString drawAtPoint ... упомянутый выше метод. (Я пробовал, но вроде не работает (т.е. ничего не изменилось); Я ' m новый для чертежа Core Graphics).

Предложения?

22
задан Alex Cio 13 March 2014 в 13:10
поделиться