ios - 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,但这种方法不起作用。
没有什么可能导致这个问题的想法 - 是否有人也遇到过这个问题或对此有任何想法?
艾尔伯特爱因斯坦:
精神错乱的定义是一遍又一遍地做同样的事情并期待不同的结果。
有时我对软件开发的印象是相反的:疯狂就是一遍又一遍地做同样的事情并期待同样的结果。
或者换句话说:相同但不同。
解决方案
好的,所以在再次阅读有关 UISplitViewController 的文档后,我找到了解决方案:
class HelpMenuController : UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.splitViewController?.preferredPrimaryColumnWidthFraction= 0.3
self.splitViewController?.maximumPrimaryColumnWidth = 0.3 * UIScreen.main.bounds.width
}
...
}
出于我未知的原因,必须将最大宽度增加到此屏幕的所需值,而对于另一个屏幕,则不必这样做。
推荐阅读
- c - Atmel 工作室中的 SPI 初始化
- c++ - 这个 C++ 视频中的这个工厂类有什么意义?
- java - 最终jar中src/main下的Maven包资源文件夹
- r - 使用两个预测变量绘制分类数据图
- ios - IOS/Objective-c:从完成块或闭包异步返回值到调用函数
- jquery - 如何使用动画创建前端/GUI 页面
- javascript - 窗口宽度改变时刷新页面
- opengl - 完全使用 OpenGL 创建的游戏纹理?
- jhipster - 如何使用 openApiGenerator 对 jhipster 项目使用 gradlew 命令
- reactjs - React-router-dom 更改 URL 但不更新 styled-component 的 ThemeProvider 的内容