Я использую CGContextSetShadowWithColor
и основную графику для рисования затененного текста. Появляется тень, но она также кажется «грязной» фактическим текстом, который бросает тень (которая должна быть чистой белой). Это похоже на то, что он отличает тень поверх текста (но не совсем).CGContextSetShadowWithColor помещает тени поверх текста, отбрасывающего тень
Как это:
Если я перерисовывать текст в том же положении, с затенение прочь, я могу переписать мутный текст с чистым белым текстом, так это работа вокруг, но я Мне интересно:
Я делаю что-то неправильно или это ошибка?
let shadowOffset : CGSize = CGSize (width: 4, height: 4)
UIGraphicsBeginImageContextWithOptions(CGSize(width: 800, height: 200), false, 1.0)
let ctx = UIGraphicsGetCurrentContext()
CGContextTranslateCTM(ctx, 0, 200);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextSetAlpha(ctx, 1.0)
CGContextSetShadowWithColor(ctx, shadowOffset, 5, UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).CGColor)
CGContextSetAllowsAntialiasing (ctx, true)
let attr:CFDictionaryRef = [
NSFontAttributeName : UIFont(name: fontName, size: fontSize)!,
NSForegroundColorAttributeName:UIColor.whiteColor()]
let line = CTLineCreateWithAttributedString(CFAttributedStringCreate(nil, "1234567890", attr))
let bounds = CTLineGetBoundsWithOptions(line, CTLineBoundsOptions.UseOpticalBounds)
CGContextSetLineWidth(ctx, 1)
CGContextSetTextDrawingMode(ctx, kCGTextFillStroke)
CGContextSetTextPosition(ctx, 100.0, 100.0)
CTLineDraw(line, ctx)
//Uncomment to clean-up text
//CGContextSetShadowWithColor(ctx, shadowOffset, 0, nil)
//CGContextSetTextPosition(ctx, 100.0, 100.0)
//CTLineDraw(line, ctx)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
Именно так. Мой штрих и заливка имеют один и тот же цвет, поэтому это не имеет значения. Пробовал разные цвета, и, похоже, он не работал. – rghome