透明导航栏ios

Pet*_*Pik 99 iphone uinavigationbar ios swift

我正在创建一个应用程序,我已经在互联网上浏览了,我想知道他们是如何制作这样的透明导航栏的:

在此输入图像描述

我在我的appdelegate中添加了以下内容:

UINavigationBar.appearance().translucent = true
Run Code Online (Sandbox Code Playgroud)

但这只是让它看起来如下:

在此输入图像描述

如何使navigationBar像第一张图像一样透明

Vid*_*and 251

您可以为半透明应用如下所示的导航栏图像.

Objective-C的:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                     forBarMetrics:UIBarMetricsDefault]; //UIImageNamed:@"transparent.png"
self.navigationController.navigationBar.shadowImage = [UIImage new];////UIImageNamed:@"transparent.png"
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.view.backgroundColor = .clear
Run Code Online (Sandbox Code Playgroud)

希望它能帮助你......!

  • 当我setBackgroundImage它删除barTintColor? (4认同)
  • 有了这个解决方案,我得到了一个黑色导航栏,任何想法? (4认同)
  • 不需要设置 navigationController 的背景颜色 (2认同)

Dan*_*ieu 109

快速解决方案

这是我发现的最佳方式.您可以将其粘贴到appDelegate的 didFinishLaunchingWithOptions方法中:

斯威夫特3/4

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    // Sets background to a blank/empty image
    UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
    // Sets shadow (line below the bar) to a blank image
    UINavigationBar.appearance().shadowImage = UIImage()
    // Sets the translucent background color
    UINavigationBar.appearance().backgroundColor = .clear
    // Set translucent. (Default value is already true, so this can be removed if desired.)
    UINavigationBar.appearance().isTranslucent = true
    return true
}
Run Code Online (Sandbox Code Playgroud)

Swift 2.0

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    // Sets background to a blank/empty image
    UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default)
    // Sets shadow (line below the bar) to a blank image
    UINavigationBar.appearance().shadowImage = UIImage()
    // Sets the translucent background color
    UINavigationBar.appearance().backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
    // Set translucent. (Default value is already true, so this can be removed if desired.)
    UINavigationBar.appearance().translucent = true

    return true
}
Run Code Online (Sandbox Code Playgroud)

来源:使iOS 8.1中的下方图像的导航栏透明

  • 你的Swift 3解决方案让我的酒吧显得白皙. (3认同)
  • 我也有一个纯白色的导航栏,没有透明的导航栏 (2认同)

Ank*_*pta 10

Swift 3:透明导航栏的扩展

extension UINavigationBar {
    func transparentNavigationBar() {
    self.setBackgroundImage(UIImage(), for: .default)
    self.shadowImage = UIImage()
    self.isTranslucent = true
    }
}
Run Code Online (Sandbox Code Playgroud)


Üma*_*mån 10

Swift 4.2解决方案:透明背景:

  1. 一般方法:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
    
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 对于特定对象:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        navBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        navBar.shadowImage = UIImage()
        navBar.navigationBar.isTranslucent = true
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

希望它有用.


Jul*_* B. 7

我能够以这种方式快速完成这个任务:

let navBarAppearance = UINavigationBar.appearance()
let colorImage = UIImage.imageFromColor(UIColor.morselPink(), frame: CGRectMake(0, 0, 340, 64))
navBarAppearance.setBackgroundImage(colorImage, forBarMetrics: .Default)
Run Code Online (Sandbox Code Playgroud)

我在一个UIColor类别中创建了以下实用工具方法:

imageFromColor(color: UIColor, frame: CGRect) -> UIImage {
  UIGraphicsBeginImageContextWithOptions(frame.size, false, 0)
  color.setFill()
  UIRectFill(frame)
  let image = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()
  return image
}
Run Code Online (Sandbox Code Playgroud)


Jav*_*ría 7

它对我有用:

    let bar:UINavigationBar! =  self.navigationController?.navigationBar
    self.title = "Whatever..."
    bar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
    bar.shadowImage = UIImage()
    bar.alpha = 0.0 
Run Code Online (Sandbox Code Playgroud)


Chr*_*ute 7

Swift 5仅适用于当前视图控制器

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Make the navigation bar background clear
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.isTranslucent = true
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    // Restore the navigation bar to default
    navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    navigationController?.navigationBar.shadowImage = nil
}
Run Code Online (Sandbox Code Playgroud)


Rei*_*ian 7

我一直在努力解决这个问题,但我在使用不同用户在此处提供的回复时遇到了问题。问题是在 iOS 13+ 上我的 NavigationBar 透明图像后面有一个白框

在此处输入图片说明

我的解决方案是这个

if #available(iOS 13, *) {
    navBar?.standardAppearance.backgroundColor = UIColor.clear
    navBar?.standardAppearance.backgroundEffect = nil
    navBar?.standardAppearance.shadowImage = UIImage()
    navBar?.standardAppearance.shadowColor = .clear
    navBar?.standardAppearance.backgroundImage = UIImage()
}
Run Code Online (Sandbox Code Playgroud)

更新

感谢@TMin

如果您使用 tableView/CollectionView,您会注意到滚动时会出现 1 点阴影。添加 navBar?.scrollEdgeAppearance = nil 来摆脱这个阴影。

希望这可以帮助任何有同样问题的人


Ato*_*mix 5

设置您的navigationBar的background属性,例如

navigationController?.navigationBar.backgroundColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.5)
Run Code Online (Sandbox Code Playgroud)

(如果您没有导航控制器,则可能需要稍作更改,但这应该使您知道该怎么做。)

还要确保下面的视图实际上在条形下方延伸。