2016-08-13 131 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