ttlog

日々の開発で得た知見の技術メモ。モバイルアプリネタが多いです。

UINavigationBarの透明化

まずは透明化/解除のExtensionを作成

public extension UINavigationBar {
    /// ナビゲーションバーを透明化する
    func enableTransparency() {
        setBackgroundImage(UIImage(), for: .default)
        shadowImage = UIImage()
    }

    /// ナビゲーションバーを透明化を解除する
    func disableTransparency() {
        setBackgroundImage(nil, for: .default)
        shadowImage = nil
    }
}

↑をUIViewControllerのviewWillAppear/viewWillDisappearで呼び出し

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.navigationBar.enableTransparency()
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.navigationBar.disableTransparency()
}