Мне нужно провести эффективное тестирование попаданий с (потенциально огромным) количеством компонентов, поэтому я представил все свои примитивы как NSBezierPath
экземпляры.Пока все отлично работает.
Теперь у меня возникают проблемы при преобразовании NSString
объектов, в частности, при отражении их положения на виде: я использую категорию NSString (BezierConversions)
из примера Apple SpeedometerView для преобразования строк впути Безье.
Путь Безье, созданный для строк, выглядит великолепно, но позиционирование его в соответствии с положением расположения экземпляров NSString
в представлении не совсем работает, поэтому я предполагаю, что этот вопрос действительно о
NSBezierPath
и transformUsingAffineTransform:
против - комбинация
NSAffineTransform
, примененная к представлению, и NSString drawAtPoint:
В моем тестовом проекте дажетривиальный регистр завершается неудачно:

Серое представление Безье для строки, нарисованной с использованием:
NSAffineTransform *moveFinal = [NSAffineTransform transform];
[moveFinal translateXBy:x yBy:y];
[textBezier transformUsingAffineTransform:moveFinal];
и фиолетовой строки через
[testString drawAtPoint:NSMakePoint(x, y)
withAttributes:attributes];
Те же атрибуты, те же позиции ввода, другое расположение в поле зрения.
И с повернутым текстом это только ухудшается.
ОБНОВЛЕНИЕ # 1
Похожеэто сводится к различным ограничивающим рамкам гвытравлено
NSString sizeWithAttributes:
NSBezierPath bounds
Теперь экспериментируем с NSString
boundingRectWithSize