我正在使用一个开源的PDF查看库(VFR PDF阅读器https://github.com/vfr/Reader)。我正在尝试实现"夜间模式"或黑底白字。我可以将背景设置为我喜欢的任何颜色,但无法更改文本颜色。您可以在中查看可以修改背景颜色的位置https://github.com/vfr/Reader/blob/master/Sources/ReaderContentPage.m在"drawLayer"方法中。它只是简单地改变PDF呈现的矩形的颜色。
我的问题是:我能对"上下文"做些什么吗?这会导致pdf中的文本变色(在我的情况下,我想要白色文本)?有问题的行看起来像这样(558行):
CGContextDrawPDFPage(context, _PDFPageRef); // Render the PDF page into the context
以下是我解决夜视问题的方法:
1) 我在NSUserDefault 中跟踪用户偏好(夜间模式或白天模式)
2) 在中
- (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);
}