首页 > 解决方案 > Swift UISplitViewController MasterViewController 设置宽度不起作用

问题描述

我正在开发一个具有拆分视图的应用程序,到目前为止它工作正常,但无法使用preferredPrimaryColumnWidthFraction 设置主控制器的宽度。应用程序中的另一个屏幕已经包含一个拆分视图,并且使用preferredPrimaryColumnWidthFraction 设置宽度可以正常工作(该屏幕已经构建了一段时间)并且在比较两个屏幕时我找不到可以解释的情节提要中的任何差异这种行为。

故事板中的基本设置如下: 在此处输入图像描述

右上角的控制器是 HelpMenuController:

import Foundation

class HelpMenuController: UITableViewController {

   override func viewDidLoad() {
      super.viewDidLoad()
      self.splitViewController?.preferredPrimaryColumnWidthFraction = 0.3
   }
   ...
}

对于另一个屏幕,设置preferredPrimaryColumnWidthFraction 的调用也发生在相应MasterViewController 的viewDidLoad 方法中。一切似乎都是相同的,但对于一个拆分视图它正在工作,对于另一个拆分视图它不是。

我还使用自定义的 UISplitViewController 对其进行了测试,并在其 viewDidLoad 方法中设置了 preferredPrimaryColumnWidthFraction,但这种方法不起作用。

没有什么可能导致这个问题的想法 - 是否有人也遇到过这个问题或对此有任何想法?

艾尔伯特爱因斯坦:

精神错乱的定义是一遍又一遍地做同样的事情并期待不同的结果。

有时我对软件开发的印象是相反的:疯狂就是一遍又一遍地做同样的事情并期待同样的结果。

或者换句话说:相同但不同。

标签: iosswiftuisplitviewcontroller

解决方案


好的,所以在再次阅读有关 UISplitViewController 的文档后,我找到了解决方案:

class HelpMenuController : UITableViewController {

   override func viewDidLoad() {
      super.viewDidLoad()
      self.splitViewController?.preferredPrimaryColumnWidthFraction= 0.3
      self.splitViewController?.maximumPrimaryColumnWidth = 0.3 * UIScreen.main.bounds.width
   }
   ...
}

出于我未知的原因,必须将最大宽度增加到此屏幕的所需值,而对于另一个屏幕,则不必这样做。


推荐阅读