当我试图通过NSString函数boundingRect包装到框中时注意初始Insets(8,0,8,0),所以我尝试用以下方法计算我的文本的每一帧:
let size = CGSize(width:250 ,height: 1000)
let options = NSStringDrawingOptions.usesLineFragmentOrigin.union(.usesFontLeading)
let estimatedFrame = NSString(string: messageText).boundingRect(with: size, options: options, attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 18
)], context: nil)
然后当我创建我的文本框架
时cell.messageTextView.frame = CGRect(x: 48 + 8, y: 0, width: estimatedFrame.width , height: estimatedFrame.height + 20)
它削减了我的文字。即使没有默认的填充和宽度的插入。 但是当我向width参数添加任意数字时,我正确地包装了全文。
有人知道这种行为的真正原因吗?甚至更多我可以添加宽度参数而不是16点甚至更少像8.3425点它会正常工作但如果我通过8.3424它会赢得#t?t?没有boundingRect func应该为我的包装盒提供合适的尺寸吗?
答案 0 :(得分:0)
UITextView
具有无法显示文本的插图(请注意,文本不会从灰色背景开始的位置开始)。如果只设置视图的宽度,则文本的实际空间将受这些插入的限制。
请参阅UITextView.textContainerInsets
。您需要将它们添加到您正在设置的框架的宽度和高度。