在 TraitCollectionDidChange 之后重组 Toolbar 和 NavigationBar
Reorganizing Toolbar and NavigationBar after TraitCollectionDidChange
我想支持类似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]
}
}
但是从常规水平尺寸 class 过渡到紧凑尺寸时似乎出现了问题。导航栏中的项目始终正确,但工具栏项目被截断或为空。
当调出ViewController时,它总是设置和显示正确,并且在水平方向的常规尺寸class中总是正确的——只有尺寸[=28=时才有问题] 从常规变为紧凑。
这是一个示例,显示右下角的添加按钮在大小更改后从工具栏中消失 class。
在 5.5" iPhone 上旋转设备时会发生同样的事情,在 iPad 上纵向旋转设备时会发生同样的事情,激活多任务处理后工具栏只是空的。这里有什么问题?谢谢!
我意识到我没有正确设置工具栏项目。而不是
navigationController?.toolbarItems = [helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton]
我应该做的:
setToolbarItems([helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton], animated: false)
我想支持类似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]
}
}
但是从常规水平尺寸 class 过渡到紧凑尺寸时似乎出现了问题。导航栏中的项目始终正确,但工具栏项目被截断或为空。
当调出ViewController时,它总是设置和显示正确,并且在水平方向的常规尺寸class中总是正确的——只有尺寸[=28=时才有问题] 从常规变为紧凑。
这是一个示例,显示右下角的添加按钮在大小更改后从工具栏中消失 class。
在 5.5" iPhone 上旋转设备时会发生同样的事情,在 iPad 上纵向旋转设备时会发生同样的事情,激活多任务处理后工具栏只是空的。这里有什么问题?谢谢!
我意识到我没有正确设置工具栏项目。而不是
navigationController?.toolbarItems = [helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton]
我应该做的:
setToolbarItems([helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton], animated: false)