繁体   English   中英

UITextView根据UITableViewCell中的文本的动态宽度

[英]UITextView dynamic width according to text inside in UITableViewCell

我正在努力使聊天气泡像在iMessage中一样。 我必须使用UITextView来利用DataDetectors来自动检测URL,电话号码和地址。 我的视图层次结构就像;

-UITableViewCell
 -ContentView
  -ChatBubbleContainerView
   -UITextView

ChatBubbleContainerView具有以下约束

  • 左,右,上和下边距10点-> ContainerView

UITextView具有以下约束

  • 左,右,上和下边距10点-> ChatBubbleContainerView

我想实现一种行为,使文本视图根据其内部内容(例如文本)自动扩展其高度和宽度。 但是文本视图没有固有的内容大小

这些是我尝试过并得到错误结果的

  1. 覆盖文本视图的intrinsicContentSize属性,但是它也不起作用。
  2. ChatBubbleContainerView一个宽度约束,并将其更改为sizeThatFits()方法的结果
  3. ChatBubbleContainerView一个宽度约束,并将其更改为text.boundingRect方法的结果

这些是我得到的结果

  1. 当我滚动表格视图时,它无法正常工作并且单元未按预期布局
  2. 它可以正常工作,但是笔尖中的单元格的初始宽度为375点,这对于4.7英寸的设备来说是很好的,但是当我切换到iPhone SE之类的设备时,初始表视图负载或单元格插入时它的英寸为4英寸,则该单元格的宽度正在计算根据375点而不是320点。 滚动单元格后,布局按预期进行布局。
  3. 与2相同。

当我使用UILabel尝试相同的布局时,它按预期工作。 如您所知, UILabel具有固有的内容大小。

谢谢

TextView约束很好,您需要对ChatBubbleContainerView约束进行一些更改。

ChatBubbleContainerView约束:

  • 顶部,顶部,底部-> 10点

  • 将MaxWidth(GreaterThanOrEqual)设置为contentView,例如0.85 ,也可以将TrailingConstraint设置为maxConstant(GreaterThanOrEqual设置为contentView。

您需要设置maxWidth,然后只有ChatBubbleContainerView会响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM