Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将导航栏大标题转换为多行、中心对齐_Ios_Swift_Ios13_Preferslargetitles - Fatal编程技术网

Ios 如何将导航栏大标题转换为多行、中心对齐

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(
设置->常规->键盘->关于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。我尝试通过编程方式添加约束,并更改其框架。没有任何效果。