將UINavigationBar設定為全透明的兩種方法
實現UINavigationBar的全透明是實現動態改變導航欄顏色的前提,我找到了兩種方法來實現這種效果
第一種
self.navigationController?.navigationBarHidden = true
第二種方法我找了好久,今天才知道
我嘗試過設定
self.navigationController?.navigationBar.barTintColor = nil
self.navigationController?.navigationBar.backgroundColor = nil
然而仍然有一層半透明效果去除不掉
我開啟ViewDebugging看了ViewHierarchy發現原因是因為如果不管這個_UINavigationBarBackground,也就是我們設定NavigationBar.backgroundImage的那個UIImageView,上面就會預設有一層_UIBackdropView和_UIBackdropEffectView,這兩個View是產生半透明效果的原因,我們用這行程式碼
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
就可以去掉那層半透明效果
另外,實現動態改變UINavigationBar的顏色我目前知道的有兩個思路
一個是不用系統的UINavigationBar,按我第一種方法設定hidden為true,自己畫一個出來
另一種方法就是按我上面說的第二種方法設定成全透明效果之後,仿照Apple的實現方法,從NavigationBar的ViewHierarchy中insert一個View,通過控制它的顏色來控制NavigationBar的顏色
這種方法的程式碼在下面這篇文章裡有提供
相關推薦
將UINavigationBar設定為全透明的兩種方法
實現UINavigationBar的全透明是實現動態改變導航欄顏色的前提,我找到了兩種方法來實現這種效果 第一種 self.navigationController?.navigationBarHidden = true 第二種方法我找了好久,今天才知道 我嘗試過設定
設定div背景透明兩種方法
css設定div背景透明有兩種方法:第一種使用opacity:0~1,這個方法有個缺點,就是內容也會跟著透明;第二種方法就是background-color:rgba(0,0,0,0~1),使用這個方法就只會設定div背景透明,而不會影響到div裡的內容。 說明一下back
C# web api返回型別設定為json的兩種方法
web api寫api介面時預設返回的是把你的物件序列化後以XML形式返回,那麼怎樣才能讓其返回為json呢,下面就介紹兩種方法: 方法一:(改配置法) 找到Global.asax檔案,在Application_Start()方法中新增一句: 。程式碼如下: Glo
C++ 將int轉換為string的兩種方法【to_string和sstream】
第一種是to_string函式,C++11新特性,使用非常方便,簡單查了下:c++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是
CentOS 7下修改默認網卡名為eth0的兩種方法
修改網卡eth0第一種方式這種方式適合在安裝操作系統的時候進行設置,點擊 Tab,打開kernel啟動選項,增加內核參數: net.ifnames=0 biosdevname=0--->Enter回車第二種方式修改網卡配置文件中的 DEVICE= 參數的關於 eth0[root@ansheng ~]
java程式將漢字轉成拼音的兩種方法-----------------第二種方式
同樣需要下載pom檔案,匯入相應的jar包!!!!!! import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPi
【C++】int轉換為string的兩種方法(to_string、字串流)轉載
int轉換成string的兩種方法 第一種是to_string函式,這是C++11新增的,使用非常方便,簡單查了下:C++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是string轉int,long,以及long lo
Vue-詳解設定路由導航的兩種方法:router-link和router.push
轉自:http://www.cnblogs.com/superlizhao/p/8527317.html 一、<router-link :to="..."> to裡的值可以是一個字串路徑,或者一個描述地址的物件。例如: // 字串 <router
如果頁面表格裡的內容過長,設定隱藏顯示的兩種方法
方法一 我使用了方法一但是沒有成功,問題是表格的寬度會隨著內容的長短而變化,找不到問題的癥結所以嘗試的方法二。 方法二: 做法基本上和方法一相同,最重要的區別是方法二藉助div實現,具體如下: 1>jsp頁面上程式碼: <td class="la" ><div
WPF程式將DLL嵌入到EXE的兩種方法
轉自:https://www.cnblogs.com/luoshupeng/p/3951597.html 這一篇可以看作是《Visual Studio 版本轉換工具WPF版開源了》的續,關於《Visual Studio 版本轉換工具WPF版開源了》可以參看地下地址(兩篇
java程式將漢字轉成拼音的兩種方法
1.使用pinyin4j將漢字轉成拼音,附件為pinyin4j的jar包 Java程式碼 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.piny
設定圓角圖片的兩種方法
在專案需求中有時會要求將圖片設定成圓形的,尤其是頭像。將圖片設定成圓形暫時知道有兩種方法:1.設定圓角 2.將圖片進行裁剪。 方法1:設定圓角 程式碼: imagV.layer.cornerRa
【C++】int轉換為string的兩種方法(to_string、字串流)
記錄一下用到過的int轉換成string的兩種方法 第一種是to_string函式,這是C++11新增的,使用非常方便,簡單查了下:C++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是string轉i
Vue-詳解設定路由導航的兩種方法: <router-link :to="..."> 和router.push(...)
一、<router-link :to="..."> to裡的值可以是一個字串路徑,或者一個描述地址的物件。例如: // 字串 <router-link to="apple"> to apple</router-link> // 物件 <rou
N76E003 復位引腳(P20)配置為輸入的兩種方法
由於N76E003管腳比較少,17個標準通用管腳,另外還有一個只能做輸入的引腳(RESET),在專案中就可能需要用到RESET引腳作為輸入,那麼問題來了,怎麼配置RESET引腳當作輸入呢?這裡介紹兩種方法。 先來看下手冊中的介紹,在“配置字”這一章。 主要配置紅色框的位,RPD(R
IntelliJ IDEA 設定預設 Maven 的兩種方法
第一種: 在 IntelliJ IDEA 的初始化介面中,依次選擇“Configure”—>“Project Defaults”—>“Settings”,然後在“Default Preferences”裡的“Maven”中進行配置,即可。 第二種
基礎篇_執行緒 第 2 集 設定執行緒名稱兩種方法:setName或者建構函式
練習1:建立兩個執行緒,和主執行緒交替執行。原來執行緒都有自己預設的名稱Thread——編號 該編號從0開始currentThread():獲取當前執行緒物件。getName():獲取執行緒名稱。設定執行緒名稱:setName或者建構函式。 class Test ext
Android RecyclerView:設定指定位置的兩種方法
方法一,直接使用當前的manager /* RecyclerView 移動到當前位置, * * @param manager 設定RecyclerView對應的manager
詳解設定路由導航的兩種方法
一、<router-link :to="..."> to裡的值可以是一個字串路徑,或者一個描述地址的物件。例如:// 字串 <router-link to="apple"> to apple</router-link> // 物件 <
WebApi返回型別設定為json的三種方法
方法一:(改配置法) 找到Global.asax檔案,在Application_Start()方法中新增一句: GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Cl