当 prefersLargeTitles 为 true 时自定义 NavigatioItem TitleView

Posted

技术标签:

【中文标题】当 prefersLargeTitles 为 true 时自定义 NavigatioItem TitleView【英文标题】:Custom NavigatioItem TitleView when prefersLargeTitles is true 【发布时间】:2018-10-18 11:46:45 【问题描述】:

我想将带有不同字体大小的单词的属性字符串设置为导航项的属性标题,该导航项是导航栏的一部分,并且属性 prefersLargeTitles 设置为 true。

我尝试将自定义视图分配给导航项的属性 viewTitle,但视图的高度始终限制为 44 像素,这是带有大标题的导航栏高度的一半。

是否可以添加一个高度等于导航栏高度的自定义 viewTitle?

self.navigationController?.navigationBar.prefersLargeTitles = true

let attrString = NSMutableAttributedString(string: "Page 1",
                                           attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 30)]);

attrString.append(NSMutableAttributedString(string: " Chapter 3",
                                            attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 19)]));

let label = UILabel(frame: CGRect.zero)
label.attributedText = attrString



let frame = CGRect(origin: CGPoint.zero, size: CGSize(width: 256, height: 88))

let titleView = UIView(frame:CGRect.zero)
titleView.addSubview(label)
label.frame = frame

self.navigationItem.titleView = titleView
self.navigationItem.titleView?.frame = frame

【问题讨论】:

【参考方案1】:

除非您破解视图层次结构,否则您无法使用公共 api 来做到这一点。

【讨论】:

以上是关于当 prefersLargeTitles 为 true 时自定义 NavigatioItem TitleView的主要内容,如果未能解决你的问题,请参考以下文章

BarTintColor 不适用于 Xamarin 中 iOS 13 中的 PrefersLargeTitles

使用 prefersLargeTitles 和 UITableView 平滑滚动

更改导航栏“prefersLargeTitles”时的平滑过渡

如何使用 prefersLargeTitles 更改标题注册表?

iOS 11 prefersLargeTitles 以 uibutton 作为标题

prefersLargeTitles 不适用于程序化布局