Я хочу отображать строки внутри слоев CoreAnimation, но, к сожалению, CATextLayer недостаточно, в основном из-за того, что его трудно использовать при использовании ограничений и , которые вы хотите обернуть в текст.
Я использую NSLayoutManager, используя следующий код (PyObjC):
NSGraphicsContext.saveGraphicsState()
# THIS SOLVES THIS ISSUE
CGContextSetShouldSmoothFonts(ctx, False)
graphics = NSGraphicsContext.graphicsContextWithGraphicsPort_flipped_(ctx, True)
NSGraphicsContext.setCurrentContext_(graphics)
height = size.height
xform = NSAffineTransform.transform();
xform.translateXBy_yBy_(0.0, height)
xform.scaleXBy_yBy_(1.0, -1.0)
xform.concat()
self.textContainer.setContainerSize_(size)
glyphRange = self.layoutManager.glyphRangeForTextContainer_(self.textContainer)
self.layoutManager.drawBackgroundForGlyphRange_atPoint_(glyphRange, topLeft)
self.layoutManager.drawGlyphsForGlyphRange_atPoint_(glyphRange, topLeft)
NSGraphicsContext.restoreGraphicsState()
Это все нормально и работает, но единственная проблема заключается в том, что он создает плохо выглядящий текст (хотя он имеет *1009* сглаживание).
Вот версия CATextLayer:
А вот версия NSLayoutManager:
Что-нибудь, что мне не хватает?