SwiftUI SegmentedPickerStyle样式Picker中图片无法显示为正方形如何解决
问题原因
SegmentedPickerStyle内置布局规则优先级更高,会自动平均分配每个分段的宽度,强制拉伸内部子视图填充分段区域,覆盖你给Image设置的20x20固定尺寸参数。- 仅添加
resizable()修饰符未指定内容缩放模式时,Image默认会拉伸填充全部可用区域,跟随被拉伸的容器变形,无法保持正方形比例。
解决方法
给Image添加宽高比锁定和自适应缩放修饰符,必要时添加固定尺寸约束,阻止父容器拉伸修改图片比例,修改后的代码如下:
Picker(selection: self.$pickerSelection, label: Text("Pick One")) { ForEach(0 ..< self.pickerImages.count) { index in Image(self.pickerImages[index]) .resizable() .scaledToFit() .aspectRatio(1, contentMode: .fit) .frame(width: 20, height: 20) .fixedSize() // 可选,强制视图保持自身尺寸不被父容器拉伸 } } .frame(width: 150) .pickerStyle(SegmentedPickerStyle())
相关修饰符说明:
aspectRatio(1, contentMode: .fit)强制图片保持1:1的正方形宽高比scaledToFit()让图片按原始比例适配你设置的20x20尺寸,不会出现裁切或过度拉伸fixedSize()为可选参数,当你发现设置的尺寸还是被分段控件覆盖时添加,即可强制视图遵循自身的尺寸设定
内容的提问来源于stack exchange,提问作者Serhii Didanov
相关产品推荐
相关产品推荐

