prefersLargeTitles不适用于程序化布局

时间:2018-01-19 20:14:39

标签: ios swift xcode ios11 swift4

我正在尝试以编程方式添加表格视图,但不显示大型标题。

这是我的代码:

self.view.addSubview(module.tableView)

module.view.translatesAutoresizingMaskIntoConstraints = false

if #available(iOS 11.0, *) {
    NSLayoutConstraint.activate([
        module.view.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 0),
        module.view.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: 0),
        module.view.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 0),
        module.view.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: 0)
    ])
}

注意:视图控制器中启用了大型标题

if #available(iOS 11.0, *) {
    navigationController?.navigationBar.prefersLargeTitles = true
    navigationItem.largeTitleDisplayMode = .always
}

也许这很重要:我正在尝试添加一个表作为子视图控制器。我的子控制器是一个UITableViewController。如果我在viewDidLoad()大型标题节目中添加子视图但不滚动。

这是link to file,我正在添加我的子模块。您可以在addChild(module:)方法中查看有问题的详细代码或here

请告诉我如何修复此错误。

5 个答案:

答案 0 :(得分:1)

在配置表格视图的视图控制器的viewDidLoad方法中启用大型标题。

if #available(iOS 11, *) {
    self.navigationController?.navigationBar.prefersLargeTitles = true
}

答案 1 :(得分:1)

我正在使用程序化布局,遇到了类似的问题。我在这里找到了解决方案:https://stackoverflow.com/a/46692583/131378。在viewDidLoad()中,我不得不重新打开largeTitleDisplayMode。这是正确的组合,可以使大标题与滚动一起工作:

self.navigationItem.largeTitleDisplayMode = .never
self.navigationItem.largeTitleDisplayMode = .always

答案 2 :(得分:0)

将您的iOS Deployment Target更新为11.0或更高版本。目前,它位于10.3。这就是为什么你没有看到大型游戏的原因。

答案 3 :(得分:0)

您必须在导航栏上单击主导航控制器,然后选择"首选大标题"在您的属性检查器中。 enter image description here

答案 4 :(得分:0)