如何创建半透明(后面有内容)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的主要内容,如果未能解决你的问题,请参考以下文章