SwiftUI如何为Label内的自定义Image设置可调整大小属性?
解决方法
方案1:自定义LabelStyle(推荐,适配系统默认Label行为)
系统自带的Label默认没有暴露图标尺寸的调整入口,通过自定义LabelStyle可以统一控制所有同样式Label的图标尺寸:
// 自定义可调整图标尺寸的Label样式 struct ResizableImageLabelStyle: LabelStyle { let iconSize: CGSize let spacing: CGFloat = 8 // 图标和文字的间距可自行调整 func makeBody(configuration: Configuration) -> some View { HStack(spacing: spacing) { configuration.icon .resizable() .scaledToFit() .frame(width: iconSize.width, height: iconSize.height) configuration.title } } }
使用方式直接在原有代码上加labelStyle修饰符即可:
Label("Continue with Google", image: "googleLogo") .foregroundColor(.white) .background(Color.red) .labelStyle(ResizableImageLabelStyle(iconSize: CGSize(width: 24, height: 24)))
方案2:自定义Label内容(自由度更高)
如果不需要复用样式,直接用带闭包的Label初始化方法,单独给图标加尺寸控制修饰符即可:
Label { Text("Continue with Google") .foregroundColor(.white) } icon: { Image("googleLogo") .resizable() .scaledToFit() .frame(width: 24, height: 24) } .background(Color.red)
- 你可以根据需求替换
scaledToFit为scaledToFill,如果使用scaledToFill建议搭配.clipped()修饰符避免图标超出边界。
内容的提问来源于stack exchange,提问作者blueskies
相关产品推荐
相关产品推荐

