首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入NSTextEffectLetterpressStyle时丢失CGBitmapContext

导入NSTextEffectLetterpressStyle时丢失CGBitmapContext
EN

Stack Overflow用户
提问于 2015-02-19 06:21:09
回答 1查看 506关注 0票数 0

我将文本绘制在坚实的背景色之上,当它出现时,应用于属性字符串的NSTextEffectLetterpressStyle效果不会出现--您只能看到文本颜色,而不能看到提供所需外观的附加白色轮廓。从本质上看,就像我没有应用活版效果一样。为什么,我怎样才能正确地画出活版文字效果呢?

代码语言:javascript
复制
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)

其结果是:

这正是我所期望的(请注意白色的大纲):

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-02 11:14:32

CFAttributedStringNSAttributedString都可以将任意属性应用于范围。属性字符串类型本身并不解释属性。

相反,字符串绘制技术解释属性。核心文本理解与UIKit或AppKit不同的属性集。Core支持的属性集被记录为这里。它没有列出(相当于) NSTextEffectAttributeName

如果使用UIGraphicsBeginImageContextWithOptions()设置当前的图形上下文,并使用NSAttributedString绘图方法将其绘制为当前图形上下文,这应该可以使用,因为它使用UIKit进行绘图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28599846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档