如何在iOS上使用CoreGraphics呈现的pdf上反转文本颜色?

时间:2014-09-05 21:15:33

标签: ios pdf text core-graphics quartz-2d

我使用的是开源PDF查看库(VFR PDF阅读器https://github.com/vfr/Reader)。我试图实施夜间模式"或黑色背景与白色文本。我可以获得我喜欢的任何颜色的背景但我无法改变文本颜色。您可以在" drawLayer"中找到https://github.com/vfr/Reader/blob/master/Sources/ReaderContentPage.m处修改背景颜色的位置。方法。它只是改变了PDF渲染矩形的颜色。

我的问题是:我可以对" context"做些什么。这会导致pdf中的文字改变颜色(在我的情况下,我想要白色文字)?有问题的行看起来像这样(第558行):

CGContextDrawPDFPage(context, _PDFPageRef); // Render the PDF page into the context

1 个答案:

答案 0 :(得分:1)

以下是我解决夜视的方法:

1)我在NSUserDefault

中跟踪用户偏好(夜间模式或日间模式)

2)in

- (void)drawLayer:(CATiledLayer *)layer inContext:(CGContextRef)context
{

a)检索用户偏好

NSString *userViewMode = [[NSUserDefaults standardUserDefaults] objectForKey:@"DayOrNightSetting"];

b)将CGContextRef的背景颜色设置为白色

 CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);

c)用:

替换CGContextDrawPage(Context,_PDFPageRef)
if ([userViewMode isEqualToString:@"Night"]) {
        CGContextSetBlendMode(context, kCGBlendModeDestinationAtop);

        CGContextDrawPDFPage(context, _PDFPageRef);
        CGContextSetBlendMode(context, kCGBlendModeExclusion);
        CGContextDrawPDFPage(context, _PDFPageRef);
    }
    else
    {
       CGContextSetBlendMode(context,kCGBlendModeNormal);
    CGContextDrawPDFPage(context, _PDFPageRef);
    }