You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:35:09