用swift實現navigation bar的完全透明 & navigation bar中button的字型大小調整

來源:互聯網
上載者:User

標籤:swift   navigation bar   

這幾天在項目中遇到的關於navigation bar的一些小問題以及解決的方法記錄一下吧:

1.  完全透明navigation bar

有時候我們想要navigation viewcontroller頂部的navigation bar變得完全透明,我們首先想到是從story board下手,但是嘗試了半天,也不能達到完全透明的效果


選擇這裡的Translucent Navigation Bar只能讓bar變成那種可以稀釋背景色的毛玻璃的效果,那麼究竟應該如何才能把整個navigation bar都變成透明呢?

答案是通過代碼實現:

非常簡單,在viewDidload或者DidAppear中,加入下面3行代碼:

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

自己動手試一下效果吧


2. 改變bar中的backButton或者leftBarButton的樣式

如果我們採用了navigation viewcontroller系列,在我們切換到下一頁面的時候,在bar的最左面會自動出現一個返回的按鈕,這個按鈕的文字預設是上一個頁面的barItem的文字內容,這些都是預設的,會自動幫我們建立。

那有時候會遇到的問題是,如果A頁面的bar Item的文字內容很長,從A頁面push到B頁面後,這個返回按鈕的文字就會很長,從而把B頁面的item內容擠到右側,這樣很不美觀。

這裡我們可以有兩種方式來處理,

1> 我們可以建立一個新的按鈕,並且賦予它文字,樣式等

let backButton = UIBarButtonItem(title: "< Back", style: UIBarButtonItemStyle.Plain, target: self, action: "goBack")navigationItem.leftBarButtonItem = backButtonnavigationItem.leftBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Chalkduster", size: 20)!], forState: UIControlState.Normal)

這樣做的缺點是,你沒有辦法從螢幕的左側向右滑屏實現返回的操作了,而且還必須在goBack的function中自己手動調用navigation的pop方法來達到返回的效果。

2> 或者我們可以來改變這個返回按鈕的樣式,比如手動把它的文字字型大小調整下

        let customFont = UIFont(name: "heiti SC", size: 12.0)        UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: customFont!], forState: UIControlState.Normal)
注意,因為我們其實是改變的UIBarButtonItem ,所以,這段代碼我們要放到Appdelegate中來實現。這樣,所有的bar中的button類的字型都被強制設定為12號大小了

用swift實現navigation bar的完全透明 & navigation bar中button的字型大小調整

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.