SwiftUI中如何调整多行Text组件内联图片的大小?
如何缩小SwiftUI多行Text中的内联SF Symbol图标
我想把多行Text里的chevron.right图标缩小,用了.resizable(capInsets:)完全没用,该怎么解决?
当前显示效果:
理想效果(更小的图标):
我的原代码:
let subtitle = Text("This is an example of a long sentence that is long, has multiple lines, and is also referred to as a sentence with several words.") .foregroundColor(.black) return subtitle + Text(" Learn more ") .foregroundColor(.green) .bold() + Text(Image(systemName: "chevron.right").resizable(capInsets: EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 8))) .foregroundColor(.green) .bold()
解决办法
当Image作为内联元素嵌入Text时,.resizable根本不会生效——因为此时Image是被当作文本的一部分来渲染的,不是独立的可调整大小的视图。要缩小图标,用这两种方法:
- 方法1:用
font()指定图标大小(推荐)
SF Symbol是基于字体的,直接给Image设置更小的字体尺寸,既能缩小图标,还能保证和文本排版对齐更自然:
let subtitle = Text("This is an example of a long sentence that is long, has multiple lines, and is also referred to as a sentence with several words.") .foregroundColor(.black) return subtitle + Text(" Learn more ") .foregroundColor(.green) .bold() + Text(Image(systemName: "chevron.right") .font(.system(size: 12))) // 替换成你需要的大小 .foregroundColor(.green) .bold()
- 方法2:用
scaleEffect()缩放图标
如果需要按比例缩放,用这个修饰符,但要注意可能需要微调对齐:
let subtitle = Text("This is an example of a long sentence that is long, has multiple lines, and is also referred to as a sentence with several words.") .foregroundColor(.black) return subtitle + Text(" Learn more ") .foregroundColor(.green) .bold() + Text(Image(systemName: "chevron.right") .scaleEffect(0.8)) // 0.8就是原大小的80%,按需调整 .foregroundColor(.green) .bold()
优先选方法1,因为字体大小的设置能让图标和文本的基线对齐更和谐,不会出现缩放导致的错位问题。
内容的提问来源于stack exchange,提问作者Nadia Siddiqah
相关产品推荐
相关产品推荐

