Мне нужно выполнить эффективное тестирование ударов по (потенциально огромному) количеству компонентов, поэтому я представил все мои примитивы как экземпляры NSBezierPath
. Все отлично работает до сих пор.NSString drawing vs. String as NSBezierPath drawing
Теперь у меня возникают проблемы преобразования 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];
те же атрибуты, те же входные позиции, другое место в поле зрения.
И только ухудшается с повернутым текстом.
UPDATE # 1
Похоже, это кипение вниз к различным ограничивающими коробки возвращенных
NSString sizeWithAttributes:
NSBezierPath bounds
Теперь экспериментирует с NSString
бо undingRectWithSize
Границы рисунка не такой же, как размер текста. Например, большой римский курсив * f * будет далеко отставать от границ поля, который возвращается 'NSAttributedString size'. – hamstergene
Да, поэтому я перешел на 'boundingRectWithSize'. Хорошее введение в различные размеры шрифта можно найти здесь (https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/FontHandling/Tasks/GettingFontMetrics.html), где sizeWithAttributes, похоже, использует внешнюю ограничительную рамку, а 'NSBezierPath ограничивает 'фактическую площадь, занимаемую глифами. – Jay