我的应用程序部署目标版本是iOS10。我在应用程序中添加了导航栏大标题。它可以根据以上iOS 10的需要运行。如果我尝试在iOS 10中进行测试,则无法正常工作。因此,我也尝试为iOS 10创建自定义导航栏大图块。但我不知道如何实现这一目标。请指导我。谢谢前进
if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = true
} else {
// need to add here as well
}
答案 0 :(得分:0)
NavigationBar 有一个 titleView 对象,title
所在的位置。您可以自定义label
到那里去,并制作navigationBar.titleView = yourLabel
或自定义 UIView 。
答案 1 :(得分:0)
您可以在导航栏的标题视图中添加视图。您也可以将图像添加到导航栏。 请参考以下链接:-
答案 2 :(得分:0)
万一有人需要这个。这是我如何做到的。对我来说,这比默认的要好,因为它支持您对大标题(例如多行)可能想要的任何自定义
就我而言,我的布局如下所示。您可以随心所欲,但请确保标题不在表格视图/滚动视图内。
查看
在这种情况下,我有 scrollViewDidScroll 委托,它检查 scrollView 内容偏移以更改 titleLabels 顶部约束。对我来说,最高限制是 16。将其更改为您想要的任何内容
<块引用> extension YourViewController: UITableViewDelegate {
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
let titleHeight = titleLabel.bounds.height
if (scrollView.contentOffset.y <= 0) {
// Title is fully visible - table view is at the top
titleLabelTopConstraint.constant = 16
isLargeTitleHidden = false
} else if (scrollView.contentOffset.y > (titleHeight + 16)){
// Title is not visible at all. Table view is at an unknown position but it is not top
titleLabelTopConstraint.constant = -titleHeight
isLargeTitleHidden = true
} else {
// Title is kind of visible. Not fully hidden or shown.
titleLabelTopConstraint.constant = -scrollView.contentOffset.y + 16
isLargeTitleHidden = false
}
} }
我也有 isLargeTitleHidden 来更新导航
<块引用>var isLargeTitleHidden: Bool = false {
didSet{
if (oldValue != isLargeTitleHidden){
updateNavBar()
}
}
}
func updateNavBar(){
let fadeTextAnimation = CATransition()
fadeTextAnimation.duration = 0.2
fadeTextAnimation.type = CATransitionType.fade
navigationController?.navigationBar.layer.add(fadeTextAnimation, forKey: "fadeText")
if isLargeTitleHidden {
navigationItem.title = titleLabel.text
} else {
navigationItem.title = ""
}
}