Segue 后视图控制器调整大小

Posted

技术标签:

【中文标题】Segue 后视图控制器调整大小【英文标题】:View Controller Resizes after Segue 【发布时间】:2017-05-08 17:57:02 【问题描述】:

我似乎找不到合适的解决方案。在将(通过 Segue 或代码)推送到新的 VC 时,我遇到了大小问题。我有以下内容:

Tab1:VenueTableVC -> VenueDetailVC -> CocktailDetailVC

Tab2:CocktailTableVC -> CocktailDetailVC -> VenueDetailVC

Tab3:UserProfileVC -> VenueDetailVC

Tab4:CocktailSearchVC -> CocktailDetailVC -> VenueDetailVC

我正在使用带有 segues 或代码的故事板将适当的视图控制器推送到导航堆栈上。除了选项卡 2 中的场景之外,每个场景都运行良好。当从 CocktailDetailVC 转到 VenueDetailVC 时,VenueDetailVC 的大小会减小高度。打印到控制台我可以看到适当的高度从 ViewDidLoad 上的该视图返回,但随后在 ViewDidLayoutSubviews 和 ViewWillLayoutSubviews 中打印降低的高度。有什么明显的我没有调查吗?我尝试删除转场,从 tableviewCell 添加转场,将 ViewController 本身的转场添加到另一个视图控制器,尝试使用代码推送到视图控制器,但仍然得到相同的结果。我尝试过的一件事是:

self.view.frame.size.height = UIScreen.main.bounds.height

在 VenueDetailVC 中的 ViewWillLayoutSubviews 中,它似乎可以工作,但表格扩展通过了底部的选项卡栏。当我从其他选项卡转到该 VC 时,它工作正常。有什么想法吗?

【问题讨论】:

您愿意发布您的 CocktailDetailVC 和 VenueDetailVC 的代码吗?如果我能看到代码,我会更容易提供帮助。 您使用的是相同的 iPhone 型号和情节提要吗? iPhone 6s 和 6s 的故事板?它不会解决你的问题,但会帮助我知道什么是错的。 @DonovanKing 我当然可以。是否有更有用的特定部分,它们都是相当大的文件,但可以放入一些最有帮助的 sn-ps。 @JoséNeto 我在 iPhone 7 上使用故事板并在 iPhone 7 上进行测试。两个 VC 都使用固定的模拟器尺寸。 看看你的vc是不是这样imgur.com/a/QC4Ni 【参考方案1】:

我想通了。它实际上影响了从 CocktailTable 开始的堆栈中所有 VC 的大小。我有一些代码来删除底部导航栏线:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = false
    self.navigationController?.navigationBar.backgroundColor = UIColor.white

从 ViewWillAppear 中取出它,似乎一切就绪。

【讨论】:

以上是关于Segue 后视图控制器调整大小的主要内容,如果未能解决你的问题,请参考以下文章

调整 UIViewController 中的视图大小

调整大小后如何调整 UINavigationController 的视图控制器框架的大小

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

获取视图大小未调整大小

推送视图控制器后视图调整大小

调整 PopOver 视图控制器的大小