• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 为消息创建气泡 View

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:35:11 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

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

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

所以我想真正的问题是如何根据每个单元格文本成员动态调整 View 大小。



Best Answer-推荐答案


使用 NSString 中的 boundingRect 函数。

func estimateFrameForText(_ text: String) -> CGRect {
    let size = CGSize(width: 250, height: 1000)
    let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
    return NSString(string: text).boundingRect(with: size, options: options, attributes: [NSFontAttributeName: UIFont(name:"OpenSans",size:15)!], context: nil)
}

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

我个人在 cellForItem 中这样使用它:

let width = estimateFrameForText(message.content).width + 20
cell.bubbleWidthAnchor?.constant = width

关于ios - 为消息创建气泡 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43691897/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap