[英]Add Image instead of largeTitle in NavigationBar
I have a large title in a ViewController.我在 ViewController 中有一个大标题。 Instead of some title I want to set an image due to I can't set attributed string.
由于无法设置属性字符串,我想设置图像而不是某些标题。
So I want to replace this construction:所以我想替换这个结构:
navigationItem.title = "Some large title"
To something like this:对于这样的事情:
let UIImageView = UImageView(image: UIImage(named: "kinopoisk_main_logo"))
navigationItem.title = "Some large title"
But as you may know it's unavailable.但是您可能知道它不可用。 Can anybody help me with that?
有人可以帮我吗?
iOS 13.0-iOS 15.0+, Xcode 13.2 Beta iOS 13.0-iOS 15.0+,Xcode 13.2 测试版
So, I figured it out.所以,我想通了。 I made a realization with a custom NavigationBar:
我用自定义的 NavigationBar 实现了:
public class NavigationBar: UINavigationBar {
private lazy var someImageView: UIImageView = {
let largeTitleImage = UIImageView(image: UIImage(named: "some_image"))
largeTitleImage.contentMode = .scaleAspectFit
return largeTitleImage
}()
...
override public func layoutSubviews() {
super.layoutSubviews()
setupAttributesForLargeTitle()
}
...
private func setupAttributesForLargeTitle() {
if let largeTitle = subviews.filter({ NSStringFromClass(type(of: $0)).contains("LargeTitleView") }).first {
for subview in largeTitle.subviews {
if *Some boolean value indicating largeTitle* {
subview.addSubview(someImageView)
} else {
...
}
}
}
}
...
}
Briefly: I am getting to the deepest view in hierarchy of NavBar views and adding new subview with image to this hierarchy简要地说:我正在进入 NavBar 视图层次结构中最深的视图,并将带有图像的新子视图添加到该层次结构中
Important note:重要的提示:
Don't use with this hack:不要使用这个黑客:
navigationItem.title
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.