如何创建半透明(后面有内容)UITabBar

Posted

技术标签:

【中文标题】如何创建半透明(后面有内容)UITabBar【英文标题】:How to create translucent (with content behind it) UITabBar 【发布时间】:2013-03-15 11:54:50 【问题描述】:

我将 UITabBar 子类化并重写 drawRect: 方法以使其透明(并使其看起来像我需要的那样)。我遇到的问题是添加到 UITabBarController 的视图没有覆盖整个屏幕,而是在底部上方 49 像素处结束,所以即使我有透明的标签栏,我也看不到它后面的东西。

有没有正确的方法可以在 UITabBarController 中设置 UIView 的大小以覆盖整个屏幕?

P.S.:我知道在标签栏后面显示内容不是一个好主意。我不想在那里显示任何内容,只是艺术,它特定于每个视图并且需要通过标签栏可见。

【问题讨论】:

你解决了这个问题吗?哪个选项适合您? 我最终做了自己的标签栏控制器,比我想象的要容易 【参考方案1】:

如果你想在UITabBar 后面有内容,我看到两个选项:

不要使用UITabBarController——这肯定行得通,因为您可以根据需要定位视图,而且实现起来并不困难。

尝试关闭视图上的clipsToBounds,并将一些视图放在他的范围之外。

// UIViewController contained in UITabBarController:
self.view.clipsToBounds = NO;
UIView *viewBehindTabBar = [[UIView alloc] init];
viewBehindTabBar.frame = CGRectMake(0, self.view.bounds.size.height,
                                    self.view.bounds.size.width, 49);
// autoresizing mask, background color, ...
[self.view addSubview:viewBehindTabBar];

【讨论】:

我尝试将 clipsToBounds 设置为 false,但在将视图调整为整个屏幕时遇到了麻烦。我想你放弃 UITabBarController 是对的,没有它应该不难做到 您可以使用 tabBarController.tabBar.alpha = 0.8 来伪造效果;明显的缺点是 tabbaritems 也变得半透明。最好只为这个实例滚动你自己的。【参考方案2】:

您可以简单地创建一个类别的 UITabBar 或 UITabBarController 并设置为Alpha

类似的东西:-

@implementation UITabBarController (Translucent)
- (void)createImage

     [self.tabBar setAlpha:0.1];

@end

你甚至可以在 Drawrect 中设置 Alpha。

【讨论】:

这只会使标签栏透明(我已经拥有)并允许您查看 UITabBarController 视图背后的内容(即 UIWindow)。它不会使内容 UIView 到达我需要的屏幕底部

以上是关于如何创建半透明(后面有内容)UITabBar的主要内容,如果未能解决你的问题,请参考以下文章

UIView 位于半透明导航栏后面,具有实用创建的视图约束

向上滚动时如何将一个div隐藏在另一个半透明的div后面

如何将div设置为透明

如何在调查表后面添加半透明矩形背景? [复制]

创建一个半透明或透明的窗口 从透明到鼠标事件,除了添加到窗体的控件

创建一个像 UINavigationBar 这样的半透明视图