增加 UINavigationBarLargeTitleView 的高度

Zan*_*ith 5 uinavigationbar uinavigationcontroller ios swift

我想向导航栏添加一个横幅,但要增加它的高度。我想复制 Apple Music 应用中艺术家页面的设计和行为:

苹果音乐

它的行为就像普通的大标题一样,除了它已向下移动之外,它UIImageView后面有一个粘性标签,并且当用户向下滚动足够远时它会返回其背景。您可以启动Apple Music,搜索艺术家并前往他们的页面亲自尝试。

我尝试了很多事情,例如在 上设置框架UINavigationBarLargeTitleView,以及此答案中的代码: https: //stackoverflow.com/a/49326161/5544222

我已经使用以下代码掌握了UINavigationBarLargeTitleView它:UILabel

func setLargeTitleHeight() {
    if let largeTitleView = self.getLargeTitleView() {
        if let largeTitleLabel = self.getLargeTitleLabel(largeTitleView: largeTitleView) {
            // Set largeTitleView height.
        }
    }
}

func getLargeTitleView() -> UIView? {
    for subview in self.navigationBar.subviews {
        if NSStringFromClass(subview.classForCoder).contains("UINavigationBarLargeTitleView") {
            return subview
        }
    }
    return nil
}

func getLargeTitleLabel(largeTitleView: UIView) -> UILabel? {
    for subview in largeTitleView.subviews {
        if subview.isMember(of: UILabel.self) {
            return (subview as! UILabel)
        }
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

vis*_*hia -1

最初放置一个带有图像、标签和播放按钮的视图。然后清除导航栏,它将显示其下方的图像

self.navigationController!.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController!.navigationBar.shadowImage = UIImage()
    self.navigationController!.navigationBar.isTranslucent = true
Run Code Online (Sandbox Code Playgroud)

稍后,当您向上滚动时,您必须手动处理它并再次显示带标题的导航。