iOS 8 中完全透明的 UITabBar

Posted

技术标签:

【中文标题】iOS 8 中完全透明的 UITabBar【英文标题】:Completely transparent UITabBar in iOS 8 【发布时间】:2014-10-09 13:19:09 【问题描述】:

我正在尝试使我的 tabBar 透明,我已经搜索过,但我发现的只是导致部分透明和不完全透明的 tabBar 的文章,有些是针对 ios 5 等的。

我想像 Sketch 3 中看到的那样完成这个:

最简单的方法是什么?

我想过这样做:

    // Make the tabBar transparent
self.tabBarController.tabBar.backgroundColor = [UIColor clearColor];
self.tabBarController.tabBar.translucent = YES;

但结果并不完美:

非常感谢帮助!:)

真诚地, 埃里克

更新

// Make the tabBar transparent
[[UITabBar appearance] setBarTintColor:[UIColor clearColor]];
self.tabBarController.tabBar.translucent = YES;

【问题讨论】:

【参考方案1】:

你试过barTintColor吗?

[[UITabBar appearance] setBarTintColor:[UIColor clearColor]];
[[UITabBar appearance] setBackgroundImage:[UIImage new]];

这应该可以解决问题。

【讨论】:

与我在更新问题中输入的代码结果相同:/ - 我将此代码放入 viewWillAppear 方法中,对吗? @Erik viewWillAppear: 为时已晚。尝试将其放入您的 AppDelegate 的 application:didFinishLaunchingWithOptions: 中,看看是否有帮助。 @JohannesFagrenkrug 不幸的是,结果与我用 didFinishLaunchingWithOptions 编写的更新中的代码相同: 你节省了我很多时间。 我将它与 Lior 的回答结合使用,setShadowImage 是让黑线消失的诀窍。【参考方案2】:

Swift 3.0

...在AppDelegate的didFinishLaunchingWithOptions中调用这段代码

let tabBar = UITabBar.appearance()
tabBar.barTintColor = UIColor.clear
tabBar.backgroundImage = UIImage()
tabBar.shadowImage = UIImage()

结果将是每个 UITabBar 的透明背景。

【讨论】:

在互联网上多次尝试不同的事物和解决方案之后,这使得标签栏“半透明”,但现在感觉它太半透明了,根本没有模糊。我相信是导致这种情况的 tabBar.backgroundImage = UIImage() 。是否有任何额外的帮助可以产生漂亮的模糊效果而不是完全透明?【参考方案3】:

您需要继承 UITabBarController 并在 viewdidload: 中放置以下代码:

CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 1.0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, rect);
UIImage *transparentImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.tabBar setBackgroundImage:transparentImage];
[self.tabBar setShadowImage:transparentImage];    
//    self.tabBar.alpha = 0.0;

【讨论】:

我没有使用子类,但setShadowImage 是我的问题的秘密,+1 :)

以上是关于iOS 8 中完全透明的 UITabBar的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 - 无法使 UIModalPresentationFormSheet 透明

iOS 8 中 UITableViewController 中的透明 UINavigationBar

Unity Shader入门精要学习笔记 - 第8章 透明效果

JAVA WEB中如何让数据库连接对开发人员完全透明?

iOS-关于View透明属性干货

带有非透明子视图的 iOS 8 透明视图