我想支持类似于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上纵向显示,激活多任务处理后工具栏只是空白。这里有什么问题?谢谢!
答案 0 :(得分:0)
我意识到我没有正确设置工具栏项目。而不是
navigationController?.toolbarItems = [helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton]
我应该做的:
setToolbarItems([helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton], animated: false)