簡體   English   中英

在Swift iOS 8中設置透明導航欄和狀態欄的圖像參考底圖

[英]Set Image Underlay of Transparent Navigation Bar and Status Bar in Swift iOS 8

我是iOS快速開發的新手,我遇到了一個問題。 我想設置透明導航欄並使透明導航欄和狀態欄的圖像底層如下圖所示,

在此輸入圖像描述

但在我實現以下代碼后,

self.navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationController!.navigationBar.shadowImage = UIImage()
self.navigationController!.navigationBar.translucent = true

結果是圖像仍然在導航欄和狀態欄下方,即使我將導航欄設置為透明。

在此輸入圖像描述

如果您沒有使用默認導航欄,則將背景圖像視圖(位於狀態欄下方可見)從頂部約束向上移動20px,然后使用以下命令清除狀態欄背景顏色:

 override func viewDidLoad() {
    super.viewDidLoad()

    let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
        statusBar?.backgroundColor = UIColor.clear
}

如果要將狀態欄項目的顏色更改為白色,請使用:

 override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

輸出將是 在此輸入圖像描述

我嘗試過與您提供的代碼相同的代碼:

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
    self.navigationController!.navigationBar.shadowImage = UIImage()
    self.navigationController!.navigationBar.translucent = true
}

它工作正常,你可以在這里看到結果:

在此輸入圖像描述

檢查我的示例項目並找出您遺漏的內容。

希望它會有所幫助。

我通過為狀態欄背景設置透明UIColor來解決這個問題。

    guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
                return
            }
            statusBar.backgroundColor = UIColor(red: 2, green: 200.0, blue: 200, alpha: 0) // color value has no effect. Only alpha value is needed to make it transparent

根據Dharmesh的回答,但更新了Swift 4

    self.navigationController!.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController!.navigationBar.shadowImage = UIImage()
    self.navigationController!.navigationBar.isTranslucent = true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM