我试图模仿UINavigationBar
由 Apple Music 应用程序使用(日期显示在大标题上方)。
我知道 Apple Music 应用程序不使用该标准UINavigationBar
of ios11 /questions/tagged/ios11但标题视图是UICollectionView
.
我也想用标准UINavigationBar
of ios11 /questions/tagged/ios11因为标题文本的大小调整功能。
我可以添加custom date label
查看大的层次结构title view
,我的代码如下所示:
self.title = "Large Title"
navigationController?.navigationBar.prefersLargeTitles = true
guard let navigationBar = navigationController?.navigationBar else { return }
// Create label
let label = UILabel()
label.text = "Small Title"
// Add label to subview hierarchy
for subview in navigationBar.subviews {
let stringFromClass = NSStringFromClass(subview.classForCoder)
if stringFromClass.contains("UINavigationBarLargeTitleView") {
subview.addSubview(label)
}
}
// Add label constraints
label.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
label.leftAnchor.constraint(equalTo: navigationBar.leftAnchor, constant: 16.0),
label.bottomAnchor.constraint(equalTo: navigationBar.bottomAnchor, constant: -50.0),
label.heightAnchor.constraint(equalToConstant: 20.0),
label.widthAnchor.constraint(equalToConstant: 200.0)
])
The custom date label
放置正确,但我无法设置高度UINavigationBar
到额外的height
标签的。
Since ios11 /questions/tagged/ios11 UINavigationBar
使用自动布局,因此设置框架将不再像以前的 iOS 版本那样起作用。
系统添加的自动布局约束。默认情况下,它的优先级为 1000,因此向标签添加附加约束不会产生任何效果或导致自动布局冲突。
有什么提示可以在“大标题”上方显示“小标题”而不滚动吗?