SwiftUI:按常数偏移 Popover 锚点

SwiftUI: Offset Popover Anchor by Constant Amount


注意:这是一个 macOS 问题,而不是 iOS。


我想将 SwiftUI Popover 锚定在这张图片中“20 小时前”按钮的底角右侧 70 点处:

想要将弹出窗口锚定按钮宽度的某个百分比(这将使用UnitPoint ).当用户在弹出窗口中选择不同的项目时,按钮的文本会更新,并且随着按钮宽度的变化,基于百分比的锚点移动,导致弹出窗口水平跳动。不好。我也不想将弹出窗口恰好固定在底部的前角,因为那看起来很蠢。

问题是,我无法弄清楚向 SwiftUI 提供什么来为弹出窗口的锚点获得一个恒定的、简单的水平偏移量。我在这里:

.popover(isPresented: $isShowingPopover, attachmentAnchor: .point(.bottomLeading), arrowEdge: .bottom, content: {
    ...
})

如何指定:“从底部引导点开始,然后向右移动 70 点”? (根据将出现在按钮中的字符串,我知道 70 在所有情况下都是一个好看的锚点。)

您可以使用 .rect:
这定义了相对于父内容矩形的绝对偏移量,但是您还必须指定 y 偏移量。

.popover(isPresented: $show1,
         attachmentAnchor: .rect(.rect(CGRect(x: 70, y: 15, width: 0, height: 0))),
         arrowEdge: .bottom)
{
     Text("Popover")
         .frame(width: 200, height: 100)
}