0

無地の背景色の上にテキストを描画していますが、それが表示されている間NSTextEffectLetterpressStyle、属性付きの文字列に適用された効果が表示されません。目的の外観を提供する追加の白いアウトラインではなく、テキストの色のみが表示されます。活版印刷効果を適用しなかった場合と本質的にまったく同じように見えます。これはなぜですか、活版テキスト効果を正しく描画するにはどうすればよいですか?

let bitmapContext = CGBitmapContextCreate(nil, UInt(imageRect.width), UInt(imageRect.height), UInt(8), UInt(imageRect.width * 16), CGColorSpaceCreateDeviceRGB(), CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue))

CGContextSetFillColorWithColor(bitmapContext, UIColor.blackColor().CGColor)
let fullBox = CGRectMake(0, 0, imageRect.width, imageRect.height)
CGContextAddRect(bitmapContext, fullBox)
CGContextFillPath(bitmapContext)

CGContextSetTextDrawingMode(bitmapContext, kCGTextFill)
CGContextSetTextPosition(bitmapContext, drawPoint.x, drawPoint.y)
let coloredAttributedString = NSAttributedString(string: "20", attributes:[NSFontAttributeName: myFont, NSForegroundColorAttributeName: textColor, NSTextEffectAttributeName: NSTextEffectLetterpressStyle])
let displayLineTextColored = CTLineCreateWithAttributedString(coloredAttributedString)
CTLineDraw(displayLineTextColored, bitmapContext)

let cgImage = CGBitmapContextCreateImage(bitmapContext)
var myImage = CIImage(CGImage: dateStampCGImage)

結果は次のとおりです。
ここに画像の説明を入力

これは私が期待していたものです(白い輪郭に注意してください):
ここに画像の説明を入力

4

1 に答える 1

0

との両方CFAttributedStringで、NSAttributedString範囲に任意の属性を適用できます。属性付きの文字列型は、本質的に属性を解釈しません。

むしろ、文字列描画テクノロジが属性を解釈します。Core Text は、UIKit や AppKit とは異なる一連の属性を認識します。Core Text でサポートされている属性のセットは、ここに記載されています。リストされていません (と同等) NSTextEffectAttributeName

UIKit を使用して描画を行っているため、現在のグラフィックス コンテキストを設定しUIGraphicsBeginImageContextWithOptions()、描画メソッドを使用してそのコンテキストに描画する場合、それは機能するはずです。NSAttributedString

于 2015-05-02T11:14:32.533 に答える