首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从CGSIZE for UITextView获取NSAttributedString?

如何从CGSIZE for UITextView获取NSAttributedString?
EN

Stack Overflow用户
提问于 2015-04-15 15:51:12
回答 3查看 809关注 0票数 17

我正在使用UITextViewNSAttributedString创建一个阅读器应用程序,我需要将整个attributedString拆分为较小数量的属性字符串,以启用页面概念。

我有计算给定属性字符串的帧大小的方法。

代码语言:javascript
复制
        CGRect rect = [attrString boundingRectWithSize:CGSizeMake(768, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];

但我需要获取(768,1024) ContentSize的attributeString。

我用过这个,但是attributedStrings没有正确划分,因为它包含NSTextAttachmentHTML stings。

代码语言:javascript
复制
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)delegate.attributedString);

如何计算?而且它需要速度快,需要占用少量的内存。

EN

回答 3

Stack Overflow用户

发布于 2015-04-17 15:57:12

如果你想知道UITextView的大小,你不应该询问文本的边界矩形,因为它不是视图的大小。UITextView包含填充,您需要考虑到这一点。

最好也是最简单的方法是在添加文本后立即在文本视图上调用sizeToFit。稍后只需要UItextView框架即可。

票数 7
EN

Stack Overflow用户

发布于 2015-04-19 06:13:50

您可以使用UITextView函数sizeThatFits:

代码语言:javascript
复制
[textView sizeThatFits:CGSizeMake(768, 1024)]
票数 2
EN

Stack Overflow用户

发布于 2015-04-20 07:29:24

如果您想要在«页面和»之间拆分文本,那么您需要使用NSLayoutManagerNSTextContainer类的功能。基本上,您需要使用initWithSize:初始化器为您希望显示的每个页面创建一个NSTextContainer实例。然后使用-[NSLayoutManager addTextContainer:]注册这些容器。

以下是相关文档:https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html#//apple_ref/doc/uid/TP40009542-CH4-SW35

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29644538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档