alibaba / GaiaX

动态模板引擎是一套轻量化、跨平台、高性能的纯原生移动端卡片渲染动态化解决方案
https://youku-gaiax.github.io/
Apache License 2.0
1.21k stars 145 forks source link

iOS NSAttributeString 宽度计算异常 #365

Closed JohnTsaii closed 1 year ago

JohnTsaii commented 1 year ago

描述这个问题

如果一个node 展示的data经过处理(gx_onTextProcess:),里面有不同的字体大小的文本,且node的布局为自适应布局(fit-content: 1;)会导致宽度计算异常

复现步骤 css文件里其中的一个Text空间的布局如下

.title {
  fit-content: 1;
  text-overflow: ellipsis;
  height:20px;
  line-height:20px;
  font-size:14px;
  color: #222222;
}

DataProtocol的处理如下

- (nullable id)gx_onTextProcess:(GXTextData *)data {
    if ([data.templateId  isEqualToString:@"gx-horizontal-item"] && [data.nodeId isEqualToString:@"title"]) {
        NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:data.value];
        [string addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:20] range:NSMakeRange(1, 2)];
        return string;
    }
    return nil;
}

就能直接复现了 预期正确的结果

不同大小字体的能正常展示在node里

截图

Foxmail20230321012523.png.zip

客户端 (请填写如下信息) :

崩溃日志

附加信息 如果需要 有复现Demo,文件有点大,如果有需要可以直接通过邮箱发

biezhihua commented 1 year ago

@JohnTsaii 我们最近业务较忙,问题处理可能较慢。

JohnTsaii commented 1 year ago

写了一个pr 麻烦codereview一下