![](/img/trans.png)
[英]Get NSAttributedString from UITextView with UITextRange
[英]How to Get NSAttributedString from CGSIZE for UITextView?
我正在使用UITextView
和NSAttributedString
创建一个阅读器应用程序,我需要将整个attributedString分成少量的属性字符串以启用Pages Concept。
我有计算给定属性字符串的帧大小的方法。
CGRect rect = [attrString boundingRectWithSize:CGSizeMake(768, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
但我需要获取(768,1024)ContentSize的attributeString。
我已经使用过这个,但是attributesStrings没有正确划分,因为它包含NSTextAttachment
和HTML
NSTextAttachment
。
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)delegate.attributedString);
我该如何计算呢? 它需要很快,需要占用少量内存。
如果你想知道UITextView
的大小,你不应该问文本的边界矩形,因为它不是视图的大小。 UITextView
包含填充,您需要考虑到这一点。
最好也更简单的方法是在添加文本后sizeToFit
在文本视图上调用sizeToFit
。 稍后只需要UItextView
框架。
你可以使用UITextView函数sizeThatFits:
[textView sizeThatFits:CGSizeMake(768, 1024)]
如果要在“pages”之间拆分文本,则需要使用NSLayoutManager
和NSTextContainer
类的功能。 基本上,您需要使用initWithSize:
initializer为要显示的每个页面创建一个NSTextContainer
实例。 然后使用-[NSLayoutManager addTextContainer:]
注册这些容器。
以下是相关文档: https : //developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html#//apple_ref/doc/uid/TP40009542-CH4-SW35
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.