lixiang1994 / AttributedString

基于Swift插值方式优雅的构建富文本, 支持点击长按事件, 支持不同类型过滤, 支持自定义视图等.
MIT License
859 stars 78 forks source link

高亮时的样式可以默认用非高亮的样式吗? #65

Closed dagundejuzi closed 4 months ago

dagundejuzi commented 4 months ago

用的textView,点击后默认的样式是文字变蓝并有下划线。可以改成默认使用非高亮时的样式吗? 我想着把高亮样式设置成和非高亮样式一样就可以了,然后试了好久好久……才写出来😭。 因为框架隐去了大部分参数的标签,书写方式也不太适应,xcode提示基本瘫了。

但是,一旦underline的Style设置为none,就会报错 'none' is unavailable: use [] to construct an empty option set 和 'none' has been explicitly marked unavailable here

代码如下:

"\("需要点击的文字", .foreground(.red), .action([.underline(.none)], someClick))
lixiang1994 commented 4 months ago

你可以试一下 "\("需要点击的文字", .foreground(.red), .action([], someClick))

dagundejuzi commented 4 months ago

你可以试一下 "\("需要点击的文字", .foreground(.red), .action([], someClick))

可以了,感谢

dagundejuzi commented 4 months ago

然后我又发现了个问题,action会持有界面导致界面无法释放,但是换一下写法就能释放了。

截屏2024-06-11 09 48 51

直接用函数名会无法释放: "\("需要点击的文字", .action([], someClickFunc))" 用闭包就可以:

"\("需要点击的文字", .action([], {  [weak self] result in 
               // do something...
}))"
lixiang1994 commented 4 months ago

https://github.com/lixiang1994/AttributedString/issues/44 是的 会有这个问题, 我也很无奈