【问题标题】:Reorganizing Toolbar and NavigationBar after TraitCollectionDidChange在 TraitCollectionDidChange 之后重新组织 Toolbar 和 NavigationBar
【发布时间】:2016-06-03 09:29:56
【问题描述】:

我想支持类似于 Safari 的布局,在水平规则的环境中,按钮显示在导航栏上,但在水平紧凑的环境中,一些按钮在导航栏上,一些按钮在工具栏上。

这就是我的traitCollectionDidChange中的内容

override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {

    let editingContextButton = editing ? resetButton : doneButton

    if traitCollection.horizontalSizeClass == .Regular {
        navigationController?.toolbarHidden = true

        navigationItem.leftBarButtonItems = [editButtonItem(), helpButton]
        navigationItem.rightBarButtonItems = [editingContextButton, addButton]

    } else if traitCollection.horizontalSizeClass == .Compact{
        navigationController?. toolbarHidden = false

        navigationItem.leftBarButtonItems = [editButtonItem()]
        navigationItem.rightBarButtonItems = [editingContextButton]
        navigationController?.toolbarItems = [helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton]
    }
}

但是,从常规水平尺寸类别转换为紧凑尺寸类别时似乎存在问题。导航栏中的项目总是正确的,但工具栏项目被截断或为空。

当调出 ViewController 时,它总是被正确设置和显示,并且它总是在水平常规尺寸类中正确——只有当尺寸类从常规变为紧凑时才会出现问题。

这是一个示例,显示右下角的添加按钮在大小类更改后从工具栏中消失。

在 5.5 英寸 iPhone 上旋转设备时也会发生同样的情况,在 iPad 上纵向时,工具栏在激活多任务处理后只是空的。这是什么问题?谢谢!

【问题讨论】:

    标签: ios swift uinavigationbar uitoolbar uitraitcollection


    【解决方案1】:

    我意识到我没有正确设置工具栏项目。而不是

    navigationController?.toolbarItems = [helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton]
    

    我应该做的:

    setToolbarItems([helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton], animated: false)
    

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 2011-04-02
      相关资源
      最近更新 更多