我刚刚注意到这种行为。我正在使用以下调用绘制 PDF:
[string drawInRect:renderingRect
withFont:font
lineBreakMode:NSLineBreakByWordWrapping
alignment:alignment];
一切都很好,除了字符串的第一个字符是换行符 () 字符。例如:
[@"Hello hello" drawInRect:renderingRect withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:alignment]; // Draws "Hello hello"
[@"nHello hello" drawInRect:renderingRect withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:alignment]; // Draws nothing
我错过了什么吗?对我来说,如果第一个字符是新行,该方法不会打印任何内容,这对我来说似乎有点奇怪。
此外,当第一个字符是换行符时,(CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode
没有问题。它毫无问题地进行大小估计。
我已经开始使用 iOS7 编译应用程序,但问题不再发生。因此,它一定是由于以下配置而发生的:
- 使用 iOS6 构建应用
- 使用 iOS7 设备运行应用。
如果使用文本编码这两个字符: n
将被绘制,但我相信您想换行。试试这段代码,它对我有用:
NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"Helvetica" size:22], NSFontAttributeName,[NSColor blackColor], NSForegroundColorAttributeName, nil];
NSAttributedString *text=[[NSAttributedString alloc] initWithString:@"Hello hello" attributes: attr];
NSSize attrSize = [text size];
[text drawAtPoint:NSMakePoint(X, Y)];
我认为您可以将drawAtPoint:
方法替换为一些将矩形作为参数的方法。