2016-08-13 135 views
2
  1. This是什麼項目目前看起來像
  2. 這是我使用透明導航欄迅速的iOS

    func styleNavBar() { 
    let navigationBarAppearace = UINavigationBar.appearance() 
    navigationBarAppearace.tintColor = UIColor(red:1.0, green:1.0, blue:1.0, alpha:1.0) 
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName:UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)] 
    navigationBarAppearace.translucent = true 
    
    navigationBarAppearace.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.3) 
    navigationBarAppearace.setBackgroundImage(UIImage(), forBarMetrics: .Default)} 
    

我試圖刪除下面的代碼的代碼,但隨後它看起來像this

navigationBarAppearace.setBackgroundImage(UIImage(), forBarMetrics: .Default) 

我的問題是,我怎樣才能讓navbar填滿頂部?並仍然具有相同的外觀

+1

請不要發佈的代碼圖像,張貼實際的代碼。 –

+0

嘗試刪除代碼後''navigationBarAppearace.setBackgroundImage(UIImage(),forBarMetrics:.Default)' –

+0

@SunilSharma我剛剛嘗試過,它的工作原理,但導航欄失去了透明效果。 – Victor

回答

3

首先,創建一個擴展名爲UIImage,它使用指定大小的純色創建圖像。 保持這個擴展的任何視圖控制器在等級標識

extension UIImage { 

    class func imageWithColor(color: UIColor, size: CGSize) -> UIImage { 
    let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) 
     UIGraphicsBeginImageContextWithOptions(size, false, 0) 
     color.setFill() 
     UIRectFill(rect) 
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
     UIGraphicsEndImageContext() 
     return image 
    } 
} 

然後用下面的方法來定製您的導航欄

func styleNavBar() { 
    let navigationBarAppearace = UINavigationBar.appearance() 
    navigationBarAppearace.tintColor = UIColor(red:1.0, green:1.0, blue:1.0, alpha:1.0) 
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName:UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)] 
    navigationBarAppearace.isTranslucent = true 

    let colorImage = UIImage.imageWithColor(color: UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.3), size: CGSize(width: UIScreen.main.bounds.width, height: 64)) 
    navigationBarAppearace.setBackgroundImage(colorImage, for: .default) 
} 

希望這將解決您的問題。

+0

非常感謝!完美的作品。 – Victor

2

我在UINavigationBar上使用此代碼使其透明。您可以根據自己的需求進行調整。在圖片中有一個在titleview的

if let topBar = self.navigationController?.navigationBar { 

     topBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) 
     topBar.shadowImage = UIImage() 
     topBar.barTintColor = UIColor.clearColor() 
     topBar.tintColor = UIColor.whiteColor() 
     topBar.translucent = true 


    } 

一個searchController這裏是什麼樣子:

Transparent navbar