ios - iOS13上的多行导航栏标题截断
问题描述
我有一个视图控制器,我需要在导航栏上显示多行标题。为此,我编写了这样的协议 -
import UIKit
protocol CustomNavigationBar {
func setupNavigationMultilineTitle(titleText: String, prefersLargeTitles: Bool, largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode)
}
然后扩展它-
extension CustomNavigationBar where Self : UIViewController {
func setupNavigationMultilineTitle(titleText: String, prefersLargeTitles: Bool = true, largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode = .automatic ) {
self.navigationController?.navigationBar.prefersLargeTitles = prefersLargeTitles
self.navigationController?.navigationItem.largeTitleDisplayMode = largeTitleDisplayMode
self.navigationController?.navigationBar.largeTitleTextAttributes = [
NSAttributedString.Key.foregroundColor: UIColor.black,
NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18, weight: .semibold)
]
self.title = titleText
if let navBarSubViews = self.navigationController?.navigationBar.subviews {
for navItem in navBarSubViews {
for itemSubView in navItem.subviews {
if let largeLabel = itemSubView as? UILabel {
largeLabel.text = self.title
largeLabel.numberOfLines = 0
largeLabel.lineBreakMode = .byWordWrapping
largeLabel.sizeToFit()
}
}
}
}
}
}
在我的视图控制器中,我符合这个协议,在 viewDidAppear 方法中,我调用 setupNavigationMultilineTitle 方法如下 -
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.setupNavigationMultilineTitle(titleText: "This is created for testing This is created for testing This is created for testing This is created for testing This is created for testing")
}
**
这适用于运行低于 iOS13 的 iPhone。
**
**
但是,在运行高于 iOS 13 的 iPhone 上,它只显示一行然后被截断。
**
iOS13的UINavigationBar有变化吗?我研究并发现了一些关于背景颜色的信息,但与使用 prefersLargeTitles 和 largeTitleDisplayMode 的多行标题无关。
有人可以帮我在 iOS13 上安装这个吗?
谢谢!!
解决方案
推荐阅读
- android - Firebase Stroage 图片下载,上传在 android 中不起作用
- sas - How to repeat or merge rows in sas
- java - 我想从图库中选择多个图像,但是在单击打开它的崩溃时选择图像后
- nginx - 如何使用 Nginx 访问根目录以外的目录?
- javascript - How to use custom input type in graphql-compose?
- python - I cannot 'join' 2 ndarrays of shape (rows,) into one ndarray of shape (rows,2)
- python - 将查看器视图文件转换为 csv
- javascript - Python 列表到 Javascript 可观察数组
- encoding - 为什么我用 ffmpeg 制作的 youtube 视频在移动设备上只能显示 360P 和 1080P,但在桌面上可以正常显示?
- java - Is it possible to create a method which can be invoked directly from a primitive type variable in java?