iPhone Popover与AutoLayout关闭

时间:2015-07-10 18:46:34

标签: ios iphone autolayout uipopovercontroller

我正在使用一个关闭了自动布局的旧应用程序,我只是遇到了需要在iPhone上显示弹出窗口的地方。

我正在使用的代码是例程:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "popoverSegue" {
            let popoverViewController = segue.destinationViewController as! UIViewController
            popoverViewController.modalPresentationStyle = UIModalPresentationStyle.Popover
            popoverViewController.popoverPresentationController!.delegate = self
        }
    }

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
        return UIModalPresentationStyle.None
    }

自动布局的示例结果:

enter image description here

关闭自动布局的示例结果:

enter image description here

有没有办法在没有自动布局的情况下使用Apple的内置系统显示弹出窗口?

2 个答案:

答案 0 :(得分:2)

我相信最终的答案是,如果您关闭自动布局,则无法在iPhone上使用Apple内置的弹出系统。

我强烈建议您编写自己的基本UIView显示系统,以便正确显示/隐藏视图。

提示:内置弹出系统中最方便的部分是它会禁用背景,指向相关项目并在外部点击时关闭等。

如果您可以在没有指向的情况下生活,那么其他任何内容都很容易复制,因为您已关闭自动布局。您可以将视图大小锁定到" iPhone"然后使UIView背景颜色清晰,全尺寸,并删除较小的内容"在它上面查看适当的大小。透明视图禁用其下方项目的点按,您可以应用点击手势来处理解雇(如果需要)。

答案 1 :(得分:1)

如果你使用IOS 8及以上版本,你可以尝试这个(Objective-C :()。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
    UIViewController *popoverViewController = segue.destinationViewController;
    popoverViewController.modalPresentationStyle = UIModalPresentationPopover;
    popoverViewController.popoverPresentationController.delegate = self;
}