下面的代码是我在制作pdf文档时如何使用CGRect
绘制一些文字的示例。我需要计算使用 comment1 绘制的CGRect
的确切大小,以便 comment2 , comment3 等所有内容都启动在页面上的正确位置。
变量 currentLine 会跟踪页面上CGRect
的结尾位置。它适用于简短评论,但不适用于后续评论重叠的长评论。字体和字体大小都是正确的。
textRect = CGRectMake(60, currentLine, 650, 300);
myString = self.comments1.text;
[myString drawInRect:textRect withAttributes:_textAttributesNotBold ];
CGSize contentSize = [myString sizeWithAttributes: @{NSFontAttributeName: [UIFont fontWithName:@"Arial" size:12]}];
currentLine = currentLine + contentSize.height;
我想知道问题是CGRectMake
是否使用650宽度。 CGSize
.... sizeWithAttributes
似乎没有考虑到这一点。计算 contentSize.height 时CGSize
.... sizeWithAttributes
假设的宽度是多少?
或者有更好的方法吗?
答案 0 :(得分:1)
我不确定这是否是一种好方法,但似乎有效:
NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"Arial" size:12]};
CGRect rect = [comment1.text boundingRectWithSize:CGSizeMake(650, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
CGRect textRect = CGRectMake(60, currentLine, 650, rect.size.height);
[comment1.text drawInRect:textRect withAttributes:attributes ];
currentLine = currentLine + rect.size.height;