我正在使用UITextView
和NSAttributedString
创建一个阅读器应用程序,我需要将整个attributedString拆分为较小数量的属性字符串,以启用页面概念。
我有计算给定属性字符串的帧大小的方法。
CGRect rect = [attrString boundingRectWithSize:CGSizeMake(768, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
但我需要获取(768,1024) ContentSize的attributeString。
我用过这个,但是attributedStrings没有正确划分,因为它包含NSTextAttachment
和HTML
stings。
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)delegate.attributedString);
如何计算?而且它需要速度快,需要占用少量的内存。
发布于 2015-04-17 15:57:12
如果你想知道UITextView
的大小,你不应该询问文本的边界矩形,因为它不是视图的大小。UITextView
包含填充,您需要考虑到这一点。
最好也是最简单的方法是在添加文本后立即在文本视图上调用sizeToFit
。稍后只需要UItextView
框架即可。
发布于 2015-04-19 06:13:50
您可以使用UITextView函数sizeThatFits:
[textView sizeThatFits:CGSizeMake(768, 1024)]
发布于 2015-04-20 07:29:24
如果您想要在«页面和»之间拆分文本,那么您需要使用NSLayoutManager
和NSTextContainer
类的功能。基本上,您需要使用initWithSize:
初始化器为您希望显示的每个页面创建一个NSTextContainer
实例。然后使用-[NSLayoutManager addTextContainer:]
注册这些容器。
https://stackoverflow.com/questions/29644538
复制相似问题