gpt4 book ai didi

ios - 当 iPhone/iPad 上的设备方向发生变化时如何在 Swift 中处理弹出窗口

转载 作者:行者123 更新时间:2023-11-29 02:06:41 25 4
gpt4 key购买 nike

我正在 Swift 中使用 popoverPresentationController 创建一个弹出框。它第一次显示正常,但当我旋转设备时,它改变了它的源位置。
无论方向如何,我怎样才能让它停留在它的原始源点?

我做的代码。

@IBAction func btn_popover_click(发件人:UIButton){

    let menuViewController = PopoverViewController()
menuViewController.modalPresentationStyle = UIModalPresentationStyle.Popover
menuViewController.preferredContentSize = CGSizeMake(50, 100) // Size of popover.

popoverMenuViewController = menuViewController.popoverPresentationController
popoverMenuViewController?.permittedArrowDirections = .Any
popoverMenuViewController?.delegate = self
popoverMenuViewController?.sourceView = sender.superview
popoverMenuViewController?.sourceRect = sender.frame
presentViewController(
menuViewController,
animated: true,
completion: nil)
}

最佳答案

swift 3

确保呈现弹出窗口的 View Controller 符合 UIPopoverPresentationControllerDelegate。

例子:

class MyViewContoller: UIVIewContoller, UIPUIPopoverPresentationControllerDelegate 
{

// your code...

// MARK: UIPopoverPresentationControllerDelegate Methods

func popoverPresentationController(_ popoverPresentationController: UIPopoverPresentationController, willRepositionPopoverTo rect: UnsafeMutablePointer<CGRect>, in view: AutoreleasingUnsafeMutablePointer<UIView>) {
let viewFrame = popoverPresentationController.presentingViewController.view.frame
let deltaX = viewFrame.height - rect.pointee.midX
rect.pointee = CGRect(x: viewFrame.width - deltaX, y: rect.pointee.maxY, width: 0, height: 0)
}

关于ios - 当 iPhone/iPad 上的设备方向发生变化时如何在 Swift 中处理弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29728608/

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