MacOS下如何在Popover中正确定位PhotoPicker
在MacOS SwiftUI中修复Popover内PhotoPicker的显示问题
在MacOS的SwiftUI中,将PhotoPicker放置在Popover内后,点击选择照片时,该组件无法完整显示在屏幕中。

用户使用的相关代码如下:
.popover( isPresented: $showAttachments ) { VStack(alignment: .leading, spacing: 20) { // ... PhotosPicker(selection: $photos) { HStack { Image(systemName: "photo") Text("Media") } } } }
问题根源是PhotoPicker默认以触发它的内部视图为锚点,受Popover的布局约束导致弹出框无法完整显示。可以通过以下方法解决:
- 给PhotoPicker添加
.presentationCompactAdaptation(.popover)修饰符,强制它以独立的Popover形式弹出,脱离原Popover的布局约束:
.popover( isPresented: $showAttachments ) { VStack(alignment: .leading, spacing: 20) { // ... PhotosPicker(selection: $photos) { HStack { Image(systemName: "photo") Text("Media") } } .presentationCompactAdaptation(.popover) // 新增修饰符 } }
- 若上述方法效果不佳,可尝试给外层Popover设置明确的尺寸(比如
.frame(width: 300, height: 400)),确保内部有足够空间,同时让PhotoPicker的弹出框有更合理的锚点参考。
内容的提问来源于stack exchange,提问作者nicolai
相关产品推荐
相关产品推荐

