【问题标题】:Transparent navbar swift iOS透明导航栏 swift iOS
【发布时间】:2016-12-20 12:13:24
【问题描述】:
  1. This 是项目目前的样子
  2. 这是我使用的代码

    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 填满顶部?还是一样的样子

【问题讨论】:

  • 请不要发布代码图片,发布实际代码。
  • 删除代码后尝试navigationBarAppearace.setBackgroundImage(UIImage(), forBarMetrics: .Default)
  • @SunilSharma 我刚试过,它有效,但导航栏失去了透明效果。
  • 尝试将你的 alpha 降低到 0.1,看看结果如何。

标签: ios swift navbar alpha


【解决方案1】:

首先,为UIImage 创建一个扩展,它创建具有指定大小的纯色图像。 将此扩展保留在类标签的任何 ViewController 中

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)
}

希望这能解决您的问题。

【讨论】:

  • 非常感谢!完美运行。
【解决方案2】:

我在 UINavigationBar 上使用此代码使其透明。您可以根据自己的需要进行调整。图中titleView中有一个searchController

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


    }

它是这样的:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 2018-03-05
    • 2014-11-08
    • 2021-11-05
    • 2017-11-26
    • 1970-01-01
    • 2018-08-19
    • 2021-12-24
    相关资源
    最近更新 更多