背景:
意见反馈页面有一行提示文字,包含客服QQ,要求qq可点击。为了实现点击功能,这里的文本没有使用UILabel,而是采用了UITextView,使用textView的链接功能。
问题:
设置textView高度的时候,使用正常的文字高度计算方法,发现高度计算正确,但是文字只显示一行,显示不全。
解决方法:
let tv = UITextView(frame: CGRect.zero) tv.isEditable = false tv.backgroundColor = UIColor.clear // 为了计算正确计算文本高度,需特殊设置textView属性,如下 tv.contentInset = UIEdgeInsets(top: -10, left: -5, bottom: -15, right: -5) tv.textAlignment = .left tv.layoutManager.allowsNonContiguousLayout = false
特别注意的是,不需要设置
tv.isScrollEnabled = false
原因:
老子布吉岛!等知道答案了再来贴
------------------------分割线------------------------
补充答案:
其实和allowsNonContiguousLayout,textAlignment属性没关系,textView默认有内外边距,我们计算出来的文本高度是正确的,但是当我们将该高度设置为TextView的高度的时候,由于还有内外边距的存在,文本就显示不下了,所以解决方案是:将textView的内外边距设为0。
tv.textContainerInset = UIEdgeInsets.zero tv.textContainer.lineFragmentPadding = 0
完美解决。
请发表评论