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

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

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

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

【问题讨论】:

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

标签: ios uitabbarcontroller uitabbar


【解决方案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 到达我需要的屏幕底部
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
相关资源
最近更新 更多