生成PDF时不显示NSAttributedString

这曾经工作,现在,突然间,它停止工作:

对于iOS 7 iPad应用程序,我生成一个PDF

UIGraphicsBeginPDFContextToFile(pdfPathWithFileName, CGRectZero, nil); ... UIGraphicsEndPDFContext(); 

在那个代码块中,下面的方法用于渲染文本下划线,但是最近,它只是停止工作,传递给方法的任何文本都不会被渲染:

 +(void)drawUnderlinedText:(NSString *)text withFont:(UIFont *)font andColor:(UIColor *)color andLocationX:(int)locationX andLocationY:(int)locationY andTextAreaWidth:(int)textWidth andTextAreaHeight:(int)textHeight{ NSDictionary *attributesDict; NSMutableAttributedString *attString; attributesDict = @{NSForegroundColorAttributeName : color, NSFontAttributeName : font, NSUnderlineStyleAttributeName : [NSNumber numberWithInt:NSUnderlineStyleSingle]}; attString = [[NSMutableAttributedString alloc] initWithString:text attributes:attributesDict]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, color.CGColor); CGRect rect = CGRectMake(locationX, locationY, textWidth, textHeight); [attString drawInRect:rect]; } 

关于绘制到PDF上下文,我无法在Web上find任何内容。 有post ( 和这里 )提到关于标签的问题。 但是,生成PDF文件时似乎没有解决我的问题…

请帮忙!

由于这是iOS中的一个错误,我决定使用这个方法,只需在上下文中画一行(参见代码注释):

 +(void)drawUnderlinedText:(NSString *)text withFont:(UIFont *)font andColor:(UIColor *)color andLocationX:(int)locationX andLocationY:(int)locationY andTextAreaWidth:(int)textWidth andTextAreaHeight:(int)textHeight{ NSDictionary *attributesDict; NSMutableAttributedString *attString; // Commented out until iOS bug is resolved: //attributesDict = @{NSUnderlineStyleAttributeName : [NSNumber numberWithInt:NSUnderlineStyleSingle], NSForegroundColorAttributeName : color, NSFontAttributeName : font}; attributesDict = @{NSForegroundColorAttributeName : color, NSFontAttributeName : font}; attString = [[NSMutableAttributedString alloc] initWithString:text attributes:attributesDict]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, color.CGColor); CGRect rect = CGRectMake(locationX, locationY, textWidth, textHeight); // Temporary Solution to NSUnderlineStyleAttributeName - Bug: CGContextSetStrokeColorWithColor(context, color.CGColor); CGContextSetLineWidth(context, 1.0f); CGSize tmpSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(200, 9999)]; CGContextMoveToPoint(context, locationX, locationY + tmpSize.height - 1); CGContextAddLineToPoint(context, locationX + tmpSize.width, locationY + tmpSize.height - 1); CGContextStrokePath(context); // End Temporary Solution [attString drawInRect:rect]; }