gpt4 book ai didi

ios - UIPopoverPresentationController 显示为全窗口弹出

转载 作者:行者123 更新时间:2023-11-28 07:48:44 25 4
gpt4 key购买 nike

这个问题在 Swift 4 之前已经被问过 3 次了,我想我也遇到了类似的问题。

我的 UIPopoverPresentationController 在纵向 + 横向显示为全窗口弹出窗口,添加 .None 没有解决问题。我通过 xcode 使用 iPhone 6 作为模拟器。

这是我所拥有的:

@objcMembers class ViewController: UITableViewController, UIGestureRecognizerDelegate, UIPopoverPresentationControllerDelegate {

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "settingsPopoverSegue" {

let buttonItemView = settingsButton.value(forKey: "view")
let viewForSource = (buttonItemView as! UIView)
popoverPresentationController?.sourceView = viewForSource

let popoverViewController = segue.destination
popoverViewController.popoverPresentationController!.delegate = self
popoverViewController.modalPresentationStyle = UIModalPresentationStyle.popover

popoverViewController.popoverPresentationController?.sourceRect = CGRect(x: view.center.x, y: view.center.y, width: 0, height: 0)
popoverViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
}
}

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {

return UIModalPresentationStyle.none
}
}

我将 segue 从 Storyboard 上的 uibarbutton 连接到 popoverViewController。

更新了上面的代码 - 好吧,所以我添加了一个 sourceView,但弹出窗口仍然向上滑动全屏。我一定还遗漏了什么。有什么想法吗?

第二次更新:将其置于设置栏按钮的操作中,iphone 仍然显示全屏:

@IBAction func settingsTapped(segue: UIStoryboardSegue, sender: UIBarButtonItem) {

if segue.identifier == "settingsPopoverSegue" {

let buttonItemView = settingsButton.value(forKey: "view")
let viewForSource = (buttonItemView as! UIView)
popoverPresentationController?.sourceView = viewForSource

let popoverViewController = segue.destination
popoverViewController.popoverPresentationController!.delegate = self
popoverViewController.modalPresentationStyle = UIModalPresentationStyle.popover

popoverViewController.popoverPresentationController?.sourceRect = CGRect(x: view.center.x, y: view.center.y, width: 0, height: 0)
popoverViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
}
}

最佳答案

请给一个源矩形打开它。如果您想从特定点打开它,请提供源代码 View 。

 let buttonItemView = YourBarButtonItem.value(forKey: "view")
et buttonItem = (buttonItemView as! UIView)
popoverPresentationController?.sourceRect = Your Rect
popoverPresentationController?.sourceView = buttonItem

关于ios - UIPopoverPresentationController 显示为全窗口弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50246815/

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