在 iOS 11 LargeTitles 中将单行标题转换为多行标题时如何去除跳转效果
Posted
技术标签:
【中文标题】在 iOS 11 LargeTitles 中将单行标题转换为多行标题时如何去除跳转效果【英文标题】:How to remove jump effect when converting single line title into multiline title in iOS 11 LargeTitles 【发布时间】:2019-01-31 16:08:08 【问题描述】:我正在尝试在导航栏上以 2 行显示我的长文本。我正在使用大标题。
我需要的是这个https://i.stack.imgur.com/Yb85L.png // 抱歉不能发图片。
图片来自this post
我尝试了很多示例,并在 2 行中显示了标题。但问题是,当我打开一个带有长标题的 ViewController 时,它会跳转以调整标题。以下是我尝试过的代码。如果使用单行文本,我想避免跳跃(增加)并显示与它相同的多行文本。正常效果。
func multiLineHeader()
if #available(ios 11.0, *)
if let subviews = self.navigationController?.navigationBar.subviews
for navItem in subviews
for itemSubView in navItem.subviews
if let largeLabel = itemSubView as? UILabel
if largeLabel.canFitInSingleLine() return
largeLabel.numberOfLines = 2
largeLabel.lineBreakMode = .byWordWrapping
largeLabel.sizeToFit()
self.navigationController?.navigationBar.frame.size.height += largeLabel.frame.height
self.navigationController?.navigationBar.layoutIfNeeded()
我从viewDidAppear()
打来电话。我尝试从viewDidLoad()
和viewWillAppear()
调用不起作用事件标题不在两行中。就像从 viewDidAppear()
调用时一样。
如果有什么不清楚的地方,请发表评论,我会补充更多细节。
【问题讨论】:
【参考方案1】:这不是解决多行跳转效果的办法。
我的问题是基于我在 App Store(app) 中看到的没有跳转效果的多行标题。过了一会儿,当我深入挖掘它时。我发现即使在 App Store 中,某些屏幕上也会出现跳转效果,并且在某些地方 App Store 使用的是视图而不是导航栏。
例如,如果您去 App Store 并搜索 Thunderbox 娱乐。
1) 转到其中一个应用程序,然后单击公司名称查看所有应用程序,您会看到一个带有跳转效果的导航栏。
2) 如果您直接从搜索屏幕打开公司资料,您不会看到任何跳转效果。
【讨论】:
以上是关于在 iOS 11 LargeTitles 中将单行标题转换为多行标题时如何去除跳转效果的主要内容,如果未能解决你的问题,请参考以下文章