我正在使用UITextView
和NSAttributedString
创建一个阅读器应用,我需要将整个attributedString分成少量的属性字符串以启用Pages Concept。
我有计算给定属性字符串的帧大小的方法。
CGRect rect = [attrString boundingRectWithSize:CGSizeMake(768, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
但我需要获取(768,1024)ContentSize的attributeString。
我已经使用了这个,但是attributesStrings没有被正确划分,因为它包含NSTextAttachment
和HTML
蜇伤。
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)delegate.attributedString);
我该如何计算?它需要很快,需要占用少量内存。
答案 0 :(得分:7)
如果你想知道UITextView
的大小,你不应该问文本的边界矩形,因为它不是视图的大小。 UITextView
包含填充,您需要考虑到这一点
最简单的方法是在添加文本后立即在文本视图上调用sizeToFit
。稍后只需要UItextView
框架。
答案 1 :(得分:2)
您可以使用UITextView函数sizeThatFits:
[textView sizeThatFits:CGSizeMake(768, 1024)]
答案 2 :(得分:2)
如果要在“页面”之间拆分文本,则需要使用NSLayoutManager
和NSTextContainer
类的功能。基本上,您需要使用NSTextContainer
初始值设定项为您希望显示的每个页面创建一个initWithSize:
实例。然后使用-[NSLayoutManager addTextContainer:]
注册这些容器。