无法使用自定义 segue 和 Storyboard 调整 UIViewController 的大小

Posted

技术标签:

【中文标题】无法使用自定义 segue 和 Storyboard 调整 UIViewController 的大小【英文标题】:Can't resize UIViewController using custom segue and Storyboard 【发布时间】:2014-11-01 19:37:15 【问题描述】:

我有一个使用自定义 segue 的自定义 tabBar 应用程序,但 destinationViewController 的大小始终以 全屏 加载,而不是我定义的大小在属性检查器中。

我在 Simulated Metrics 中将 ViewController 的大小设置为 Freeform,在 Simulated Size 吃了 Size Inspector,我将宽度定义为 1024,高度定义为 693。我还取消了 NIB 中的 Resize View strong> 即使我没有使用 .xib 文件。

我已经在模拟器和真机上测试过这个项目,但都不起作用。

当我点击按钮时,它显示destinationViewController,但隐藏了TabBar,这当然不应该发生。

图片更好地展示了我所面临的情况:

【问题讨论】:

【参考方案1】:

终于找到了解决办法。问题实际上出在我以这种方式使用的 perform() 函数上:

override func perform() 
    var src = self.sourceViewController as UIViewController
    var dst = self.destinationViewController as UIViewController

    src.presentViewController(dst, animated: false, completion: nil)

解决方法是我用这个更改了 presentViewController 行:

override func perform() 
    var src = self.sourceViewController as UIViewController
    var dst = self.destinationViewController as UIViewController

    src.view .addSubview(dst.view)

现在一切正常!!!

【讨论】:

以上是关于无法使用自定义 segue 和 Storyboard 调整 UIViewController 的大小的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Show Detail Segue 自定义 UINavigationBar

关闭自定义警报视图并解除 segue 问题?

自定义 Segue NavBar 后退按钮

Segue 未从自定义 tableView 单元格触发

使用自定义 segue 动画将一个视图替换为另一个视图?

Swift:嵌入在导航控制器中的视图之间的自定义segue