Как нарисовать поле, содержащее строку при использовании drawInRect? - PullRequest
0 голосов
/ 14 сентября 2011

Я использую drawInRect из UIKit, чтобы нарисовать строку. Я также хочу нарисовать (увидеть) ограничивающий прямоугольник, в котором нарисована строка (вроде наличия строки внутри поля). Как это сделать?

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

Методы drawInRect UIKit возвращают CGSize, который является размером нарисованной строки.Используйте это вместе с источником CGRect, который вы передали drawInRect, и именно этот прямоугольник вы хотите нарисовать.

CGSize size = [string drawInRect:rect .... plus your options];
CGRect boundingRect = rect;
boundingRect.size = size;

[[UIBezierPath bezierPathWithRect:boundingRect] stroke];
0 голосов
/ 29 мая 2015

drawinRect больше не возвращает CGSize, поэтому, основываясь на посте jrturton, я использовал что-то вроде этого, чтобы нарисовать прямоугольник вокруг содержимого строки -

[str1 drawInRect:rect withAttributes:attributes];

CGRect boundingRect = [str1 boundingRectWithSize:rect.size options:NSLineBreakByWordWrapping | NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
boundingRect.origin.x = rect.origin.x;
boundingRect.origin.y = rect.origin.y;

[[UIBezierPath bezierPathWithRect:boundingRect] stroke];
...