问题标签 [nstextcontainer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 确保 NSLayoutManager 中的布局
我有一个包含大量文本的 UITextView。iPhone 4、5 和 6 上的滚动大部分都很流畅,但在 6 Plus 上却有很多卡顿。(我相信这是因为 6 Plus 对于它必须推动的像素数量而言动力不足)。我注意到,一旦我滚动过一个区域,如果我在它上面滚动,滚动就会很流畅;该区域已经进行了布局,处理器不需要做太多事情。我想在到达该地区之前强制进行布局。这是我尝试过的:
这似乎根本没有做任何事情。在第一次通过区域时滚动仍然不平滑,并且前后日志语句的差异为 0.00014 秒。为了确保我真的得到了正确的文本容器,我还尝试了:
这也没什么区别。
我需要做什么来强制布局文本容器中的所有文本?
任何帮助将不胜感激。
谢谢。
编辑添加:回答 TheCodingArt 的问题:就布局管理器而言,我没有做任何异国情调的事情。这是我的设置代码:
显式实例化和添加文本容器和文本存储是我从这个问题的第一个答案中学到的: Scroll to bottom of UITextView erratic in iOS 7 ...这确实有所帮助,但对于 6 Plus 来说还不够。
后来,我向其中添加了文本:
ios - 如何将自定义 UIBezierPath 放入 NSTextContainer
我正在使用此链接中的方法:How to fit text in a circle in UILabel
当我使用原始方法时,[UIBezierPath bezierPathWithOvalInRect:r];
效果很好。但是当我绘制自己的 UIBezierPath 并替换它时,它不起作用。while 循环永远持续下去。下面是 (A) 自定义 UIBezierPath 绘图和 (B) 默认 UIBezierPath 椭圆的屏幕截图:http: //i.imgur.com/n74BHjX.png
ios - 向上滚动时动态设置 UITextView 排除路径会导致无限循环
我在 UIViewController 中有一个 UITextView。在那个 UITextView 前面是另一个包含两个按钮的 UIViewController。这两个按钮是静态的,它们会遮挡文本视图中的文本。
我想要实现的是文本上的排除路径,它环绕两个按钮所在的位置,当滚动文本视图时,排除路径被重新计算,因此文本始终 100% 可见。为此,我在 -viewWillAppear 中设置了初始排除路径,然后使用 -scrollViewDidScroll: 和 scrollView.contentOffset 重新计算排除路径。
这一切在向下滚动时都可以正常工作,但是一旦我开始向上滚动,我就会陷入循环并且处理器最大化。
如果我登录 -scrollViewDidScroll: 我得到这个:
因此,当 scrollView 向上滚动时,它会重新计算将文本向下推并将 scrollView 向下推的排除路径……我认为这就是正在发生的事情。虽然 350pxs 看起来有很大的不同,但它只是移动到下一行的一两个单词。
那么我的问题是,为什么会发生这种情况,我该怎么做才能解决它?
这是代码:
** 编辑 ** 看来我错过了显而易见的事情。-updateExclusionPathWithYOffset: width: 更改导致 -scrollViewDidScroll: 触发的 textView 布局,这就是导致循环的原因。
我仍然对避免这种情况的方法感兴趣。提前感谢任何愿意花时间的人。
ios - NSTextContainer excludePaths 随文本移动
我正在尝试在exclusionPaths
内部实现我的自定义视图UITextView
,并在类似于 Pages 应用程序的文本编辑过程中使用文本移动它们。
我正在尝试为自attributedText
定义视图添加自定义属性,并且我正在更新exclusionPaths
使用boundingRectForGlyphRange
自定义属性之后textViewDidChange
。
当用户输入新行时我遇到问题,我正在使用exclusionPaths
所以当用户在图像之前点击换行符时,我的自定义属性在下方exclusionPath
并且来源y
位于boundingRectForGlyphRange
错误的位置。
有任何想法吗?
编辑:问题是UITextView
从情节提要/xib加载过程中的 Apple 错误,iOS 7 UITextView 中的换行符打破了文本工具包禁区包装这对我有帮助,当替换文本为“\n”时,我只是在 shouldChangeTextInRange 中调整排除路径。
ios - 通过点击获取 UILabel 中的字符索引
我想获取 UILabel 上点击字符的索引。我已经对 UILabel 进行了子类化。在我的 awakeFromNib() 我有这个:
对于标签的前 5 个字符,它正在按照我想要的方式工作,就像我点击第一个字符并且在我的 touchesEnded 中我得到一个 0 的索引:
var touchedCharacterIndex = layoutManager.characterIndexForPoint(touch.locationInView(self), inTextContainer: textContainer, fractionOfDistanceBetweenInsertionPoints: nil)
但是当我点击 UILabel 前四个字符之后的任何位置时,我得到 4 或 0,这是不正确的。
谢谢,
更新
根据评论中的建议,我添加了以下内容:
我把它称为layoutSubviews()
,和,awakFromNib
和 的设置器。bounds
frame
attributedText
text
现在它给了我一些奇怪的索引,比如如果文本长度是 21,点击第一个字母给我 6。
ios - NSTextContainer 的确切高度
我有一种用于计算文本容器的确切高度大小的方法。尝试测量填充有阿拉伯 html 内容的属性字符串的高度时,该方法返回不正确的值。
这是使用的代码:
是否有任何解决方案可以测量任何 html 内容的确切高度?
谢谢
ios - 具有多个 NSTextContainers 的 NSLayoutManager 导致 UITextViews 不可选择/不可编辑
我正在尝试实现多页文本编辑布局,如 Pages、MS Word、...。在 OS XI 上,可以通过为多个 NSTextView 创建一个 NSLayoutManager 和一个 NSTextStorage 来实现这一点。每个 NSTextView 都有自己的 NSTextContainer。请参阅下面的 OS X 代码。一个在两个 NSTextView 之间传播文本的简单示例:
这行得通。
但是,当我尝试在 iOS 上使用 UITextView 执行相同操作时,UITextViews 变得不可选择或不可编辑。请参阅我的 iOS 代码:
文本从一个 UITextView 流向另一个,但不可编辑。我将非常感谢任何建议。我用谷歌搜索了这个问题,发现其他人也遇到了同样的问题,但没有找到解决方案。
ios - 更改 UITextView 的边界时 TextContainer 未调整大小
调整 textView 的大小后,我希望 textContainer 与 textView 的大小相同(我希望文本与调整后的 textView 的宽度相同)。所以我现在正在做的是我以UITextView
编程方式创建一个,然后(在 textView 中有或没有文本)我通过改变它的边界来调整 textView 的大小,但 textContainer 保持相同的大小(文本在比 textView 更小的矩形中,看起来很糟糕)。
这是一些代码:
然后:
目前我不知道为什么它不起作用并且找不到解决方案。
ios - iOS UITextView 的 textContainer 文本在调整大小时被截断
我有一个UITextView
我正在使用 a 调整大小UIPinchGestureRecognizer
:
UITextView
在我使用上述函数调整大小之前,我的所有文本都会显示。一旦我将尺寸调整得更小,textContainer
高度和宽度都会变小。我试图更改bounds.size
为frame.size
. 我已经autoresizesubview = true
有了。无法弄清楚这个...我几乎尝试了所有方法。