Ios 如何将导航栏大标题转换为多行、中心对齐
我正试图设计一个视图控制器,它带有多行中心的大标题文本,就像苹果公司的Ask Siri(Ios 如何将导航栏大标题转换为多行、中心对齐,ios,swift,ios13,preferslargetitles,Ios,Swift,Ios13,Preferslargetitles,我正试图设计一个视图控制器,它带有多行中心的大标题文本,就像苹果公司的Ask Siri(设置->常规->键盘->关于Ask Siri、听写和隐私…) 我可以通过以下方式实现居中文本: let paragraph = NSMutableParagraphStyle() paragraph.alignment = .center navigationController?.navigationBar.largeTitleTextAttributes = [.paragraphStyle: par
设置->常规->键盘->关于Ask Siri、听写和隐私…
)
我可以通过以下方式实现居中文本:
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = .center
navigationController?.navigationBar.largeTitleTextAttributes = [.paragraphStyle: paragraph]
我确实从故事板设置了导航标题,并尝试了以下方法来实现多行大标题:
但是没有一个可以在iOS 13上使用。没有任何这样的属性可以设置,
title
变成了多行。你需要操纵它
这是如何创建多行导航栏标题的代码示例:
label.backgroundColor = .clear
label.numberOfLines = 2
label.font = UIFont.boldSystemFont(ofSize: 16.0)
label.textAlignment = .center
label.textColor = .white
label.text = "This is a\nmultiline string for the navBar"
self.navigationItem.titleView = label```
通过向scrollView添加多行标签,然后根据垂直scrollView偏移量在scrollView的
scrollViewDidScroll
delegate方法中显示/隐藏导航项标题,可以实现此目的
func scrollViewDidScroll(scrollView:UIScrollView){
如果scrollView.contentOffset.y>myLabelHeight&&navigationItem.title==“”{
setTitle(隐藏:false)
}否则,如果scrollView.contentOffset.y这不是我要求的。它总是在导航标题中显示小标题。实际上,我需要UINavigationbar大标题的确切行为。(我添加了屏幕截图)。它已经由系统处理。但目前它不支持开放方式来启用多行。Stackoverflow上的一些答案已经涵盖了它,但它在iOS 13上不起作用。由于所提供的API不支持它,我将使用我的解决方案-您只需几行代码就可以实现所需的结果。否则,循环thr通过查看层次结构并更改大标题标签。其他StackOverflow帖子的解决方案不起作用的原因可能是Apple在iOS 13中更改了导航栏的视图层次结构。您可以使用Xcode的UI调试器查看标签在层次结构中的位置,然后更改for循环。我也检查过了。大标题le labels UIView的固定高度为52。我尝试通过编程方式添加约束,并更改其框架。没有任何效果。