UINavigationController 透明度?

6

我正在尝试使我的导航栏变得完全透明,这样UINavigationButtonItems就只可见,背景(通常是白色)应该显示背景图像。

我尝试了以下方法:

HomeNavigationController *navBar = [[HomeNavigationController alloc] initWithRootViewController:self.myViewController];
[navBar.navigationBar setBarTintColor:[UIColor clearColor]];
    [navBar.navigationBar setTranslucent:YES];

虽然两者都似乎无法正常工作。

编辑:

使用

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                     forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];

我可以看到它按预期工作,但是项目现在也是不可见的。
最终编辑:啊,上面的代码确实有效,只要在测试之前不应用其他外观更改即可!
实际执行预期操作的代码:
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                                  forBarMetrics:UIBarMetricsDefault];

或者你可以设置一个透明的图片,但这样做没有太多意义。如果你不想有表示边框的线,请使用原始编辑中显示的其余代码。


你可以尝试使用以下代码:[navBar.navigationBar setTintColor:[UIColor colorWithWhite:1.0 alpha:0.0]]; - user2277872
1
看这个:https://dev59.com/O2Eh5IYBdhLWcg3w7nWW#21850947,或许对你有帮助。 - Dimitris Bouzikas
1
如果你希望你的UINavigationBar完全透明,那为何不将其隐藏起来,使用自定义的UIButtons替代UIBarButtonItems呢? iOS 7之后,UINavigationBarsUITabBarsUIToolbars的外观发生了变化,使得调整它们的透明度变得更加困难,而且可能不建议这样做。 - Vinod Vishwanath
1个回答

6
有一个技巧。只需将透明图像设置为导航栏背景即可。
UIImage *fakeImage = [UIImage imageNamed:@"transparentImage"];
[navigationBar setBackgroundImage:fakeImage forBarMetrics:UIBarMetricsDefault];

或者

[navigationBar setBackgroundImage:[UIImage new]
                    forBarMetrics:UIBarMetricsDefault];

1
您还需要将阴影图像设置为空的 UIImage - voidref

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接