能否为带rotationEffect修饰符的SF Symbol使用字符串插值?
为带rotationEffect(_:anchor:)修饰符的SF Symbol使用字符串插值是否可行?
在Swift 5.0中,未添加修饰符的SF Symbol可以直接通过字符串插值嵌入Text中,代码示例如下:
struct ContentView: View { var body: some View { Text("Some text before \(Image(systemName: \"waveform.circle\")) plus some text after.") } }
但为Image添加rotationEffect(_:anchor:)修饰符后,代码无法编译,报错信息为:
实例方法'appendInterpolation'要求'some View'遵循'_FormatSpecifiable'协议
结论:不可行
添加修饰符后,原本的Image类型会被包装成some View类型的返回值,而Text的字符串插值仅支持符合_FormatSpecifiable协议的类型——原生Image恰好实现了该协议,但修饰符返回的包装视图并未实现,因此无法直接通过字符串插值嵌入。
替代方案
改用HStack将文本与带修饰符的Image组合,实现类似的排版效果:
struct ContentView: View { var body: some View { HStack(spacing: 4) { Text("Some text before ") Image(systemName: "waveform.circle") .rotationEffect(.degrees(90)) Text(" plus some text after.") } } }
内容的提问来源于stack exchange,提问作者tim
相关产品推荐
相关产品推荐

