UINavgationbar 漸變透明效果

問題的產(chǎn)生

產(chǎn)品個需求,修改UINavgationbar 的透明度,以前圖省事就把bar給隱藏了,然后自定義了個假的頭(UIView),開始感覺還不錯,在view上放什么都方便??梢援攊PhoneX 發(fā)布的時候徹底崩潰了,頂上是自定義的,不能很好適配iPhoneX 的界面,然后原生的navgationbar 能很好的適應,所以就開始著手對navgationbar 的擴展,期望在原生的基礎上達到滑動漸變透明的效果

著手解決

網(wǎng)上找了很多解決方法,最簡單的一個方法是在navgationbar上添加一層view,也不會影響bar上的按鈕顏色和透明度。

代碼

//適配 iPhoneX
let kStatusBarHeight = UIApplication.shared.statusBarFrame.height
let kNavBarHeight: CGFloat = 44.0
let kTopHeight = kStatusBarHeight + kNavBarHeight
let kTabBarHeight = kStatusBarHeight > 20 ? 83:49
//自定義view
var zh_alphaView: UIView? {
        set {
            objc_setAssociatedObject(self, &alphaViewKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
        }
        get {
            return objc_getAssociatedObject(self, &alphaViewKey) as? UIView
        }
    }
func zh_setBackgroundColor(color: UIColor, alpha: CGFloat) {
        if zh_alphaView == nil {
            zh_alphaView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.main.bounds.width, height: kTopHeight))
            navigationBar.setBackgroundImage(UIImage(), for: .default)
            navigationBar.shadowImage = UIImage()
//            navigationBar.insertSubview(zh_alphaView!, at: 0)     //ios 11下遮擋 標題
            navigationBar.subviews[0].insertSubview(zh_alphaView!, at: 0)
        }
        zh_alphaView?.backgroundColor = color.withAlphaComponent(alpha)
    }

源代碼地址

github地址 如果您覺得有幫助,不妨給個star鼓勵一下, 歡迎關注

參考鏈接

當然有參考鏈接啦

T . T 最近發(fā)現(xiàn)了更好的方法

// 給導航欄設置一個背景圖
self.navigationController?.navigationBar.setBackgroundImage(image, for: .default)
// 導航欄的透明度(設置一個全局的透明度對象)
fileprivate lazy var _alpha = 0.0
// 獲取導航欄背景 初始透明度為0
_barImageView = self.navigationController?.navigationBar.subviews.first
_barImageView.alpha = CGFloat(_alpha)
func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let offsetY = scrollView.contentOffset.y
        if offsetY <= 0 {
            _alpha = offsetY / -kTopHeight
            _barImageView.alpha = CGFloat(_alpha)
        } else {
            _barImageView.alpha = CGFloat(0.0)
        }
}

鏈接:iOS - 導航欄漸變

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容