SwiftUI中Picker视图选中项时如何移除或调整标签图片大小?
解决Picker视图标签图片过大或移除的问题
针对你遇到的Picker选中后标签图片过大遮挡文字的问题,有两种可行的解决方式:
方案1:移除标签中的图片,仅显示文字
原来的Picker默认会把选中项的完整内容(图片+文字)作为标签展示,我们可以通过自定义Picker的标签,只显示选中分类的名称,彻底去掉图片:
Picker(selection: $selectedCategory) { ForEach(categorySM.categories, id: \.self) { category in HStack { if let inputImage = UIImage(data: category.image ?? Data()) { Image(uiImage: inputImage) .resizable() .scaledToFit() } Text(category.name ?? "") } .tag(category as CategoryItem?) } } label: { // 自定义标签,仅展示选中的分类名称 Text(selectedCategory?.name ?? "选择分类") } .font(.callout) .pickerStyle(.menu)
方案2:保留标签图片并调整其大小
如果需要保留标签里的图片,只需在自定义标签中给图片设置固定尺寸,限制其大小即可避免遮挡文字:
Picker(selection: $selectedCategory) { ForEach(categorySM.categories, id: \.self) { category in HStack { if let inputImage = UIImage(data: category.image ?? Data()) { Image(uiImage: inputImage) .resizable() .scaledToFit() } Text(category.name ?? "") } .tag(category as CategoryItem?) } } label: { HStack { if let selectedImageData = selectedCategory?.image, let inputImage = UIImage(data: selectedImageData) { Image(uiImage: inputImage) .resizable() .scaledToFit() .frame(width: 20, height: 20) // 按需调整尺寸数值 } Text(selectedCategory?.name ?? "选择分类") } } .font(.callout) .pickerStyle(.menu)
方案1可以直接实现你想要的仅文字标签效果,方案2则能保留图片同时控制其显示大小,根据需求选择即可。
内容的提问来源于stack exchange,提问作者fs_tigre
相关产品推荐
相关产品推荐

