Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS导航栏设置透明而不生效_Ios_Objective C_Uinavigationcontroller - Fatal编程技术网

iOS导航栏设置透明而不生效

iOS导航栏设置透明而不生效,ios,objective-c,uinavigationcontroller,Ios,Objective C,Uinavigationcontroller,这是我的代码: - (void)viewDidLoad { [super viewDidLoad]; [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]]; } 但是

这是我的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
}
但是导航栏还是灰色的,为什么


在一个新的项目中,这段代码还可以。

我可能会说一些显而易见的事情,但是你试过了吗

    [self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];

我已经使用以下代码更改了颜色

self.navigationController.navigationBar.barTintColor =  [UIColor colorWithPatternImage:[UIImage imageNamed:@"greenPatter.png"]];

    CGRect bgFrame = self.navigationController.navigationBar.bounds;

    bgFrame.origin.y -= 20.0;

    bgFrame.size.height += 20.0;

    UIView *backgroundView = [[UIView alloc] initWithFrame:bgFrame];

    backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    backgroundView.backgroundColor =  [UIColor colorWithPatternImage:[UIImage imageNamed:@"greenPatter.png"]];

    backgroundView.alpha = 0.6;

    [self.navigationController.navigationBar addSubview:backgroundView];

 [self.navigationController.navigationBar sendSubviewToBack:backgroundView];

    [self.navigationController.navigationBar setTitleTextAttributes:
     @{NSForegroundColorAttributeName:[UIColor whiteColor]}];
greenPatter.png是绿色的图像, 您还可以替换

self.navigationController.navigationBar.barTintColor =  [UIColor colorWithPatternImage:[UIImage imageNamed:@"greenPatter.png"]];

这对我有用。
请尝试告诉我。

以下代码运行良好

UINavigationBar *bar =  [UINavigationBar appearance];
[bar setBackgroundImage:[UIImage imageNamed:@"navbg"] forBarMetrics:UIBarMetricsDefault];

要设置透明,我使用以下代码

- (void)viewWillAppear:(BOOL)animated {

    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];
    self.navigationController.navigationBar.barTintColor = [UIColor clearColor];

    [super viewWillAppear:animated];
}
然后把颜色恢复过来

- (void)viewWillDisappear:(BOOL)animated {


    [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = nil;
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];


    [super viewWillDisappear:animated];
}

AppDelegate.m
类中使用此代码

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"topbar-bg"] forBarMetrics:UIBarMetricsDefault];

一个完全透明的导航栏:

- (void)transparentNavigationBar {

    UINavigationBar *navBarAppearance = [UINavigationBar appearance];

    [navBarAppearance setBackgroundImage:[UIImage new]
                                                  forBarMetrics:UIBarMetricsDefault];
    [navBarAppearance setShadowImage:[UIImage new]];
    [navBarAppearance setTranslucent:YES];

}

如果要使其半透明,请将“半透明”设置为“否”,并将所需的batTintColor设置为alpha<1。

无效,则条形图颜色为gray@sands.yu这很奇怪,它在几个应用程序中对我有效。这没关系,但是“下一个视图控制器”动画有一个问题…我想我可以解决这个问题。我想我们必须在每个视图控制器上粘贴。我这么做了,如果你有别的办法,请告诉我。
- (void)transparentNavigationBar {

    UINavigationBar *navBarAppearance = [UINavigationBar appearance];

    [navBarAppearance setBackgroundImage:[UIImage new]
                                                  forBarMetrics:UIBarMetricsDefault];
    [navBarAppearance setShadowImage:[UIImage new]];
    [navBarAppearance setTranslucent:YES];

}