簡體   English   中英

iOS中模糊的半透明導航欄

[英]Blurred translucent navigation bar in iOS

我正試圖在我的Swift iOS應用程序中獲得這種模糊 - 半透明的導航欄效果(圖像中的第一個導航欄):

半透明導航欄

但我不能完成這件事。 我嘗試了幾種方法,其中一些方法如下:

setBackgroundImage, shadowImage and translucent attrs in AppDelegate (Getting the NavController from the RootViewController attr)

AppDelegate主要方法中的那些行:

UINavigationBar.appearance().translucent = true;
UINavigationBar.appearance().barTintColor = UIColor(white: 1, alpha: 0.4)

從UIBuilder更改屬性

在viewControllers中設置self.automaticallyAdjustsScrollViewInsets = trueself.edgesForExtendedLayout = UIRectEdge.None UIRectEdge.None

但仍然無法讓這個工作。 我正在使用iOS 8.1和9.0在XCode模擬器上運行該應用程序

我做錯了什么?

didFinishLaunchingWithOptions中添加以下代碼

對於Objective C

  [[UINavigationBar appearance] setTranslucent:NO];

適用於Swift 3 + / iOS 10+

UINavigationBar.appearance().isTranslucent = false

第二個導航欄已經是半透明和模糊 - 它不像第一個導航欄那樣半透明。 如果打開數字色度計並將鼠標懸停在屏幕截圖上,則可以看到第二個導航欄的背景在覆蓋圖像的區域中較暗。

之所以第一導航欄是更半透明比第二導航棒中說明了這個問題 :所述第一桿的屏幕截圖是從運行iOS 7.0.2一個裝置拍攝,而第二欄的屏幕截圖是從設備拍攝運行iOS 7.0.4。 Apple改變了UINavigationBar在這些iOS版本之間的行為,並再次改變了iOS 7.1的行為。

Apple 解釋了目前的半透明機制如下:

半透明條形圖將其barTintColor與灰色混合,然后將其與系統定義的Alpha值組合,以生成最終背景顏色,用於將條形圖與其覆蓋的內容進行合成。

模糊效果的唯一描述如下:

默認情況下,iOS 7中的導航欄是半透明的。此外,系統模糊應用於所有導航欄。

您可以使用UIImage.imageWithColor:來更改條形圖的透明度UIImage.imageWithColor:使用適當的Alpha值從UIColor為條形圖制作背景圖像,但這樣做會消除模糊效果。 沒有記錄的方法來改變“系統定義的alpha值”以增加條的半透明度而不刪除“系統模糊”。

如果你想在iOS 8.1和9.0上模仿舊的半透明和模糊效果,你需要創建自己的UINavigationBar子類並插入一個或多個子視圖,例如UIView,背景顏色使用適當的alpha值(對於透明度)和/或UIVisualEffectView(用於模糊效果)。

您可以在此問題的答案之一中找到組合視圖。

相關: 模糊效果在iOS 7.1上消失

plist中

也許plist更改可以解決您的問題。

暫無
暫無

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

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