在iOS 11 LargeTitles中将单行标题转换为多行标题时如何消除跳转效果

时间:2019-01-31 16:08:08

标签: swift xcode uinavigationbar ios11

我试图在导航栏中以2行显示我的长文本。我正在使用LargeTitles。

我需要的是这个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()不起作用事件标题不在2行中。就像从viewDidAppear()调用时一样。

如果有任何不清楚的地方,请发表评论,我会添加更多详细信息。

1 个答案:

答案 0 :(得分:0)

这不是解决多行跳转效果的解决方案。

我的问题是基于我在App Store(app)中看到的多行标题,该标题没有跳转效果。过了一会儿,当我深入研究它。我发现,即使在App Store中,某些屏幕上和某些地方App Store也会使用视图而不是导航栏来产生跳跃效果。

例如,如果您去App Store并搜索Thunderbox娱乐。

1)转到其应用程序之一,然后单击公司名称以查看所有应用程序,您将看到一个具有跳转效果的导航栏。

2)如果直接从搜索屏幕中打开公司资料,则不会看到任何跳转效果。