Closed hackjie closed 5 years ago
看着这些没问题。那后面是怎么设置 label 的文字、调整 label 的大小的呢?
奇怪的是我如果直接返回YYTextLayout就可以,但是直接返回height就不丢失
之后是怎么设置 label 的文字、调整 label 的大小的呢?那段代码可能能看出原因。
我上面写了的: NSMutableAttributedString improveAttributeText = [NSMutableAttributedString makeAttributeStringWithText:item.resultEval font:[UIFont systemFontOfSize:fontSize] color:[HBTThemeManager appCustomGrayFontColor]]; improveAttributeText.yy_lineSpacing = lineSpacing; improveAttributeText.yy_maximumLineHeight = fontSize; improveAttributeText.yy_minimumLineHeight = fontSize; CGFloat improveHeight = [NSMutableAttributedString calculateAttributeStringHeightWithAttributeString:stateAttributeText fixWidth:(SCREEN_WIDTH * 0.75 - 2kViewLeadingAndTrailingOffset)];
我的意思是,后面 label.frame、text、attributedText、textLayout 属性是怎么设置的,设置的顺序是什么样的。
我觉得如果直接设置 texyLayout 应该是没问题的。
嗯嗯 直接设置textLayout可以解决问题
灰常感谢....用系统方式算了半天行高,一直都算的不正确,后来发现原来是YYLabel显示的带行间距的attributeString和系统显示的间距不太一样,用YYTextLayout计算结果正常.
@515783034 haha
@hackjie 哥们,我直接返回高度,算的也是有缺失,你返回layout的话是怎么获取文本实际高度的?因为我是代码计算cell的行高的,需要知道这个高度
如果在PC端输入文字包含了\r\n,那么计算时的高度就会少1行.而且在某些情况下,单独的句号会另起一行,导致计算行高错误. @ibireme
@515783034 你是用 YYTextView 还是 YYLabel 显示的?另外,lineBreakMode 设置的是什么?
@ibireme YYTextLayout 在使用layoutWithContainerSize方法计算size的时候 可以设置行数吗。试了下 设置好像没有效果。
自问自答: YYTextContainer container = [YYTextContainer containerWithSize:size]; container.maximumNumberOfRows = self.numberOfLines; YYTextLayout layout = [YYTextLayout layoutWithContainer:container text:totalAttributedString];
这是我算高的代码:
这是我Label的设置:
这是我算高的部分: NSMutableAttributedString _improveAttributeText = [NSMutableAttributedString makeAttributeStringWithText:item.resultEval font:[UIFont systemFontOfSize:fontSize] color:[HBTThemeManager appCustomGrayFontColor]]; improveAttributeText.yy_lineSpacing = lineSpacing; improveAttributeText.yy_maximumLineHeight = fontSize; improveAttributeText.yy_minimumLineHeight = fontSize; CGFloat improveHeight = [NSMutableAttributedString calculateAttributeStringHeightWithAttributeString:stateAttributeText fixWidth:(SCREEN_WIDTH * 0.75 - 2_kViewLeadingAndTrailingOffset)];
现在计算的文字高度总是缺少一段,给定的宽度限制应该没问题