我想支持类似于 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 上纵向时,工具栏在激活多任务处理后只是空的。这里有什么问题?谢谢!