gpt4 book ai didi

ios - swift - 弹出窗口指针未指向其调用者

转载 作者:行者123 更新时间:2023-11-29 00:46:18 25 4
gpt4 key购买 nike

我正在制作一个非常常规的弹出窗口,但无论我将其放置在何处,它都会略微指向调用者按钮的上方。

我通过 Storyboard连接了弹出窗口。在 popoverviewcontroller 中,我放置了一个包含按钮的 View 。 popoverviewcontroller的viewdidload()的代码是:

override func viewDidLoad() {
super.viewDidLoad()

self.preferredContentSize = popoverView.frame.size
}

发生这种情况是因为我将按钮放置得太靠近顶部吗?

enter image description here

最佳答案

您需要使用 sourceView 和 sourceRect 属性为弹出窗口提供定位点。利用呈现 Controller 的 prepareForSegue 函数来设置弹出窗口的属性,如下所示:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SegueIdentifier" {
let destController = segue.destinationViewController
let popover = destController.popoverPresentationController;

destController.popoverPresentationController!.delegate = self
destController.preferredContentSize = CGSize(width: 320, height: 186)
popover?.sourceView = self.button;
popover?.sourceRect = self.button.bounds
}
}

您还可以在此处提供 preferredContentSize,因为这样代码更加模块化,您的内容 View Controller 也可以在其他地方使用。

在我的理解中,在 storyBoard 中链接 pop over segue 意味着你已经提供了 sourceView。根据 Apple 文档,要提供 anchor ,请将 sourceView 与 sourceRect 结合使用。我猜如果你不提供 sourceRect(就像你使用 Storyboard的情况一样),操作系统会采用 View 的原点,这就是弹出窗口箭头不正确的原因。指定合适的 sourceRect 将改善您的结果。

关于ios - swift - 弹出窗口指针未指向其调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38569804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com