菜鸟教程小白 发表于 2022-12-11 19:35:11

ios - 为消息创建气泡 View


                                            <p><p>我想让单元格中的文本在其后面有一个气泡 View 。</p>

<p>目前消息文本是在一个容器内,所以它只能变得这么大,</p>

<p>每个单元格都有一个来自核心数据的消息文本属性,因此消息标签的大小不同。</p>

<p>由于 View 层次结构,我似乎必须预测每个单元格的气泡大小,因为它位于实际的消息标签 View 之下。</p>

<p>所以我想真正的问题是如何根据每个单元格文本成员动态调整 View 大小。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>使用 NSString 中的 boundingRect 函数。</p>

<pre><code>func estimateFrameForText(_ text: String) -&gt; CGRect {
    let size = CGSize(width: 250, height: 1000)
    let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
    return NSString(string: text).boundingRect(with: size, options: options, attributes: , context: nil)
}
</code></pre>

<p>设置一个最大值(宽度、高度 -> 在本例中为 250 和 1000),添加您的文本正在使用的 UIFont,这将计算标签文本大小。
当对气泡使用此功能时,您可能应该添加一个 +20 高度、+20 宽度的填充,这样气泡就不会与文本接触得太近。</p>

<p>我个人在 cellForItem 中这样使用它:</p>

<pre><code>let width = estimateFrameForText(message.content).width + 20
cell.bubbleWidthAnchor?.constant = width
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 为消息创建气泡 View ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43691897/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43691897/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 为消息创建气泡 View