ios - Swift:如何在 iOS 中创建弹出菜单

标签 ios swift uipopovercontroller uipopover

我正在自定义 UIView Canvas 上做一些绘图,而不是在 View 底部有一组按钮来允许用户选择形状,我想让用户做一个长按手势,然后会出现一个弹出式菜单,其中包含可供选择的不同形状。我在 xCode 中没有看到类似的东西,尽管我假设在 iOS 中有类似的东西。我不希望在电池电量不足和通知时出现警报弹出窗口。

我研究过使用 UIPopoverController,但我对我读过的其他一些 Stack Overflow 问题以及 Apple 提供的文档感到有点困惑。

最佳答案

Floating Menu

我描述了实现 float 菜单的步骤,如上图所示:

  1. 创建从 barButtonItem 到类型为“Present as Popover”的 MenuViewCobtrollersegue
  2. MenuViewController 中覆盖 preferredContentSize 为:

    override var preferredContentSize : CGSize
    {
        get
        {
            return CGSize(width: 88 , height: 176)
        }
        set 
        {
            super.preferredContentSize = newValue
        }
    }
    

在我的例子中,我将返回宽度为 100 和大小为 200 的 CGSize。您可以设置这些值以正确适合您的 float 菜单内容。 4. 在初始/源 View Controller 中,在 prepare(for segue: sender) 方法中将 self 设置为 popoverPresentationController 委托(delegate):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "ShowMenuSegue" {
        if let tvc = segue.destination as? MenuViewController
        {
            tvc.delegate = self
            if let ppc = tvc.popoverPresentationController
            {
                ppc.delegate = self
            }
        }
    }
}

源 View Controller 必须遵守 UIPopoverPresentationControllerDelegate 并实现以下方法:

extension ViewController: UIPopoverPresentationControllerDelegate {

    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        return UIModalPresentationStyle.none
    }
}

就是这样。你有 float 菜单。希望这会很有用。

关于ios - Swift:如何在 iOS 中创建弹出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27233977/

相关文章:

ios - 如何将一个 UIWindow 放在另一个 UIWindow 后面?

swift - Swift 3 中的滑动手势

swift - MongoKitten : Sorting by a generated field

ios - UIPopoverController backgroundColor 在 iOS 8 上旋转后返回默认值

ios - iDevice 中的哪个 plist 存储了 idevice 的语言?

ios - 使用 SWrevealviewcontroller 将数据传递到后 View

ios - 如何在 Swift 中为 View 集合中的每个单元格添加弹出窗口

ipad - 适用于 iPad 的 MonoTouch : How to show another UIViewController in a UIPopoverController?

iphone - 淹没/显示选项卡栏

ios - 检查 AVPlayer 的播放状态并将叠加 View 添加到 AVPlayerViewController