问题标签 [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.

0 投票
1 回答
82 浏览

ios - 防止 UITextView 偏移其文本容器

我正在尝试UITextView在用户输入文本时动态修改 a 的高度(最高为最大高度)。当文本视图中有偶数行时,我遇到了一种非常奇怪的行为。

我正在使用自动布局,并且文本视图有高度限制。我响应对文本视图的委托 ( textViewDidChange(_:)) 的调用,在其中我根据contentSize.

这是代码:

这很好用,它将框架调整到最大MaxTextViewHeight,然后文本视图可以滚动。但是,当文本视图中有偶数行时,文本视图会在其底部添加一种偏移量NSTextContainer,从而导致顶部行被截断:

顶线被切断

文本容器偏移

但是,当有奇数行时,NSTextContainer不再偏移:

顶线正常

文本容器正常

起初我以为它以某种方式受到文本视图的控制,textContainerInset但这仅用于填充内部的空间NSTextContainer,因为将其设置为.zero删除内部空间但不影响偏移量(顺便说一下,它会变得更糟,因为顶部线几乎完全消失):

删除插图会使情况变得更糟

我查看了UITextView类引用,没有看到任何可以让我操纵甚至获取此偏移值的属性。

作为一种解决方法,我增加了文本容器的顶部插图并删除了底部插图:

在此处输入图像描述

到目前为止,这是可行的,但我通过反复试验得出了 10 的值,到目前为止,我只在单个设备上对其进行了测试。

我对需要脆弱的固定值的更hacky解决方法不感兴趣;我试图了解如何设置此偏移量以及修复它的正确方法。希望有人能提供一些见解,谢谢!

0 投票
3 回答
225 浏览

ios - 导致 UITextView 最后换行的额外空格被忽略

这是我的代码:

这是结果:

在此处输入图像描述

根据空格的数量,它应该创建了一个空的换行符。然而,正如我们所看到的,情况并非如此。如果我在字符串的最后添加另一个字符,则会显示换行符(但带有我不想要的字符)。

如果需要,我如何显示一个空的换行符UITextView

0 投票
0 回答
162 浏览

ios - 如何使用 NSTextStorage 获取最大行数的字符串高度?

我正在尝试获取属性字符串的高度(对于任何字体、任何语言、任何奇怪的 utf8 字符等)。

我在 Badoo Chatto 上发现了这个关于不同解决方案的有趣话题:https ://github.com/badoo/Chatto/issues/129

我正在使用的解决方案是他们的:

如何修改此逻辑以便它可以考虑最大行号?

我尝试添加container.maximumNumberOfLines = 2,但它不会改变任何东西,因为 NSTextContainer 设置为无限高。

理想情况下,我想避免使用任何 UIView 或子视图,因为此处理必须在后台线程中完成。此外,任何基于 UIKit 的解决方案似乎都不是 100% 可靠的(参见 Badoo Chatto 链接)。

0 投票
1 回答
32 浏览

ios - UITextView 在调整大小时删除临时空行

我有一个UITextView可能会改变大小的东西。滚动被禁用。这里发生了什么:

有什么办法可以防止这种奇怪的行为,但也可以保持 lineBreakMode .byTruncatingTail?(删除此选项会产生预期的调整大小结果)

操场代码,因此您可以轻松地重现此代码:

0 投票
0 回答
36 浏览

swift - 如何在 NSTextTable 中获取选定的文本块

再会,

我最近一直在为此苦苦挣扎。我想知道如何获取选定的 NSTextTable 文本块,以便我可以在下方和上方添加块,我还想知道用户何时编辑 NSTextTable。

0 投票
0 回答
58 浏览

swift - 如何在 NSTextContainer 而不是 NSTextStorage 中获取属性字符串

再会,

我试图获取 NSTextContainer 而不是 NSTextStorage 的属性字符串,任何时候我使用返回 textView 的属性字符串的方法,它都会返回 NSTextStorage 的属性字符串,我只想要那个边界矩形的属性字符串?有什么建议么?这几天我一直在为此苦苦挣扎。

我会很感激任何帮助。

谢谢

0 投票
0 回答
31 浏览

swift - 如何删除 NSTextContainer 并导致 NSLayoutManager 重新排列而不是使布局无效

再会,

当我从 NSLayoutManager 中删除指定索引处的 NSTextContainer 时,它会导致整个布局无效,这意味着剩余的 NSTextContainers 没有布局管理器。是否有可能我可以删除一个 NSTextContainer 并且 NSLayoutManager 会将文本存储的属性字符串重新排列到剩余的 NSTextContainer 上。如果您有任何想法,我将不胜感激。谢谢