Closed Jacky-LinPeng closed 8 years ago
高度不准
具体是什么问题?贴一下相关代码吧。
for (int i = 0; i<max; i++)
{
NSString *title = i<texts.count?texts[i]:@"";
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:10];//调整行间距
NSDictionary *attri = [NSDictionary dictionaryWithObjects:@[kCurrentLabelFont,color,paragraphStyle] forKeys:@[NSFontAttributeName,NSForegroundColorAttributeName,NSParagraphStyleAttributeName]];
[contentText appendAttributedString:[[NSAttributedString alloc] initWithString:title attributes:attri]];
if (i<images.count)
{
UIImage *image = images[i];
UIImageView *imageView = [self setupContentImageView:image tag:i];
NSMutableAttributedString *attachText = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:imageView.size alignToFont:font alignment:YYTextVerticalAlignmentCenter];
[contentText appendAttributedString:attachText];
}
}
[self adjustContentSizeWithContentText:contentText];
==================================================
-(void)adjustContentSizeWithContentText:(NSMutableAttributedString *)contentText
{
KSTopicShareVCArticleModel *model = [[KSTopicShareVCArticleModel alloc] init];
YYTextLayout *textLayout = [self converAttributeStingToLayout:contentText];
model.textLayout = textLayout;
model.height = textLayout.textBoundingSize.height;
[self.articleList addObject:model];
}
@property (nonatomic,strong) YYTextView *contentLabel; 赋值的时候 self.contentLabel.attributedText = model.textLayout.text; 只有系统表情的时候 这个textBoundingSize不准
YYTextLayout 在创建时,会有很多参数,比如 insets、linePositionModifier 等,在创建成功后,textBoundingSize
是会完全对应内部的文本排版结果的,不会出现不准确的情况。如果显示逻辑和 textLayout 对不上,那说明在这过程中某些参数没有传递过去。
不太清楚 [self converAttributeStingToLayout:contentText]
这一句是怎么创建 YYTextLayout 的。如果已经有 layout 了,那可以直接设置到 label.textLayout 来显示。
-(YYTextLayout )converAttributeStingToLayout:(NSMutableAttributedString )contentText { YYTextContainer container = [YYTextContainer containerWithSize:CGSizeMake(self.view.frame.size.width, MAXFLOAT)]; YYTextLayout textLayout = [YYTextLayout layoutWithContainer:container text:contentText]; return textLayout; }
insets、linePositionModifier这些参数 我在demo里面都没有看到怎么使用 所以 我都不懂得设置 所以来问你
那就把这一行 self.contentLabel.attributedText = model.textLayout.text;
改成 self.contentLabel.textLayout = model.textLayout;
,另外,调整 label 高度的代码放在这一行前面,这样试试。
因为 我这个self.contentLabel 是 YYTextView 他的textLayout 是只读的不让设置 help
/* The current text layout in text view (readonly). It can be used to query the text layout information. / @property (nullable, nonatomic, strong, readonly) YYTextLayout *textLayout;
呃。。那为嘛起名 contentLabel。。如果不需要文本编辑的话,推荐改成 YYLabel 好一些。
YYTextView 的内容高度是可变的,而且里面会有一些文本操作的额外逻辑,所以这里并没有提供封装好的文本计算接口。如果确实需要计算 YYTextView 的大小,你可以试试把 textView.textContainerInset 清空。
之前是用YYlabel的 所以就叫了这个名字 但是 我使用YYlabel的时候 没用好 图片会缺失 我当时就改用YYTextView 禁言编辑 然后发现遇到这个问题 感谢你的耐心回复 哈 我还是用YYlabel
着急!我使用YYTextView的时候 富文本里面包含系统表情,但是高度不准,怎么办怎么办