在 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 中将单行标题转换为多行标题时如何去除跳转效果的主要内容,如果未能解决你的问题,请参考以下文章

iOS11上的程序化beginRefreshing()在largeTitles模式下存在问题

如何在mysql中将单行插入查询重构为多行插入查询?

在 Spark 中将简单的单行字符串转换为 RDD

在 MySQL 中将多行连接成单行

在 Visual Studio 中将多行代码格式化为单行

如何在VS代码中将单行跨越成多行?