SwiftUI中系统图标chair.lounge.fill无法放大的问题求助
SwiftUI系统图标无法放大的问题解决
SF Symbols(苹果系统图标)默认是不可缩放的,你直接给Image设置frame不会改变图标的实际尺寸——这就是图标始终无法放大的原因。
解决这个问题只需要给图标添加**.resizable()**修饰符,让它支持缩放,之后再设置frame就能生效了。修改后的代码如下:
@ObservedObject var cinema = Cinema() var body: some View { VStack() { HStack() { Image(systemName: "chair.lounge.fill") .resizable() // 开启图标缩放支持 .aspectRatio(contentMode: .fit) .frame(width: 100, height: 100) Text("Special Seats") } .foregroundColor(.brown) HStack() { Image(systemName: "chair.lounge.fill") .resizable() .aspectRatio(contentMode: .fit) .frame(width: 100, height: 100) Text("Available Seats") } .foregroundColor(.blue) } .frame(maxWidth: .infinity, maxHeight: .infinity) .background(.black) }
另外还有一种更贴合SF Symbols设计规范的方式:直接通过font设置图标大小,这种方式会保持图标原本的视觉权重,代码示例:
Image(systemName: "chair.lounge.fill") .font(.system(size: 100))
两种方式都能解决你的问题,你可以根据需求选择:
- 用
.resizable()+frame的方式更灵活,能通过aspectRatio控制图标在容器内的填充模式 - 用
font的方式更符合系统图标的设计逻辑,适合不需要自定义填充模式的场景
内容的提问来源于stack exchange,提问作者Steven-Carrot
相关产品推荐
相关产品推荐

