【发布时间】:2016-03-29 04:39:45
【问题描述】:
我正在制作一个 NSPopover,并且已经制作完成,因此我可以使用父视图控制器和我的视图控制器作为子视图控制器在具有滑动动画的视图控制器之间进行转换。效果很好,除了在我添加它之前,弹出框会自动调整为我的视图大小,但现在,弹出框卡在固定大小。
创建popover的代码:
self.homeVC = PopoverViewController(nibName: "PopoverViewController", bundle: nil)
self.loginVC = SignInViewController(nibName: "SignInViewController", bundle: nil)
self.containerView.view.wantsLayer = true
self.containerView.view.frame = self.homeVC!.view.bounds
self.containerView.addChildViewController(self.homeVC!)
self.containerView.view.addSubview(self.homeVC!.view)
popover.contentViewController = self.containerView
转换视图控制器的代码:
self.loginVC!.view.frame = self.homeVC!.view.bounds
self.containerView.addChildViewController(self.loginVC!)
let transition: NSViewControllerTransitionOptions = .SlideLeft
self.containerView.transitionFromViewController(self.homeVC!, toViewController: self.loginVC!, options: transition, completionHandler: { finished in
self.homeVC!.view.removeFromSuperview()
self.homeVC!.removeFromParentViewController()
self.containerView.view.bounds = self.loginVC!.view.bounds
})
无论如何,我可以让弹出框在转换后自动调整到它应该的大小吗?
提前致谢。
【问题讨论】:
-
如果你只是将弹出视图的框架设置为容器视图的农场呢?
-
@rocky 遗憾的是,这不是问题所在。弹出框确实匹配容器视图的大小,但不注意容器视图的子视图的大小(使用约束设置)。我发现问题是约束并修复了它。现在我用约束设置弹出框的大小。不过,谢谢你的想法。
标签: swift macos cocoa appkit nsviewcontroller