IOS正確解決隱藏nabber后push、pop閃黑問題
只需要在頁面添加這樣的代碼就可以解決 (ps: 看我最新一篇文章,里面有demo關(guān)于這個問題的)

iphonex 導(dǎo)航欄適配
1.第一種。就是導(dǎo)航欄隱藏。自定義假的view。我這里做的就是對于跳轉(zhuǎn)到某個界面。然后把它的導(dǎo)航欄隱藏。寫入假的導(dǎo)航欄,自定義view 的約束。這里是用自定義view相對于安全區(qū)域而言加的約束。

2.第二種。設(shè)置導(dǎo)航欄透明度。

主要就是通過設(shè)置導(dǎo)航欄的透明度來創(chuàng)建它的假象。改變tableview 的frame。讓它一開始就往上偏移導(dǎo)航欄的高度


最關(guān)鍵的代碼還是對導(dǎo)航欄的擴展。其實就是在導(dǎo)航欄底部自己畫一個view加進去。然后改變這個view的透明度來顯示導(dǎo)航欄的顏色。當(dāng)導(dǎo)航欄不為透明時。把這個view移除。展示導(dǎo)航欄自己的顏色。
import UIKit
var UIViewControllerOverlayKey: UInt8 = 0
extension UINavigationBar {
var overlay: UIView? {
get{
return objc_getAssociatedObject(self, &UIViewControllerOverlayKey
) as? UIView
}
set{
objc_setAssociatedObject(self, &UIViewControllerOverlayKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
func j_setDefaultBackgroundColor( _ backgroundColor: UIColor ) {
self.j_reset()
if self.overlay == nil {
self.barTintColor = ThemeColor.j_changeFromTranslucent()
self.isTranslucent = true
self.setBackgroundImage(UIImage(), for: .default)
self.shadowImage = UIImage()
self.overlay = UIView(frame: CGRect(x: 0, y: 0, width: kWidth, height: kNavBarHeight))
self.subviews.first?.insertSubview(self.overlay!, at: 0)
}
self.overlay?.backgroundColor = backgroundColor
self.j_setAlpha(0)
}
func? j_setAlpha( _ alpha: CGFloat ) {
self.overlay?.alpha = alpha
}
func j_reset( _ isTranslucent: Bool = false ) {
if !isTranslucent {
self.isTranslucent = false
self.setBackgroundImage(UIImage.j_image(with: ThemeColor), for: .default)
}
self.barTintColor = ThemeColor
self.overlay?.removeFromSuperview()
self.overlay = nil
}
}

這個demo雖然不是主要講解這個導(dǎo)航欄的。但是我里面都實現(xiàn)了這個功能
demo 地址:?https://github.com/zhuhaiyan/AsyndisplayDemo
如果有問題??梢约游襋Q交流。我是小白。還望多多賜教。QQ: 2287611141