我正在使用一个关闭了自动布局的旧应用程序,我只是遇到了需要在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
}
自动布局的示例结果:
关闭自动布局的示例结果:
有没有办法在没有自动布局的情况下使用Apple的内置系统显示弹出窗口?
答案 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;
}