【问题标题】:Custom UITabBarItem without title label没有标题标签的自定义 UITabBarItem
【发布时间】:2012-10-07 17:41:13
【问题描述】:

我正在尝试创建一个我将使用外观 API 自定义的 UITabBar。我一直试图从 UITabBarItem 中删除标题标签并调整图像大小以使其居中。如果只是删除标题文字,图片下方和栏的底部会有空白。

有人知道如何制作没有标题的 UITabBarItem 吗?

【问题讨论】:

  • 您确定在调用initWithTitle:image:tag: 并为标题传递 nil 以及指向图像的有效指针时,您仍然会丢失像素到空标题吗?
  • 是的,它会在底部显示一些空白像素并将图像向上移动。例如,当 bar 高度只比 item 图片大一点时,图片顶部会被截断,下面会有空白

标签: ios uitabbar uitabbaritem


【解决方案1】:

将标题设置为nil并移动图标

self.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil
                                                image:[[UIImage imageNamed:@"icon_tabbar_inactive.png"]
                                                    imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
                                        selectedImage:[[UIImage imageNamed:@"icon_tabbar_active.png"]
                                                    imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

// Move the tabbar icon to the middle of tabbar
self.tabBarItem.imageInsets = UIEdgeInsetsMake(6.0, 0.0, -6.0, 0.0);

【讨论】:

    【解决方案2】:

    今天做了同样的任务。

    由于我不能将标签栏的全部空间用于项目图像,我只需在用户按下任何标签时更改标签栏背景。

    1. 所以第一步是为每个选定的选项卡准备带有全尺寸按钮的背景图片。

    2. 然后创建自定义类并将其分配给您的标签栏控制器

    3. 在您的自定义类中为 ViewDidLoad 中的第一个选项卡设置背景图像:

      [[self tabBar] setBackgroundImage:[UIImage imageNamed:@"tabShopsActive"]];
      [[self tabBar] setSelectionIndicatorImage:[UIImage imageNamed:@"tabSelection"]];
      
    4. 为 ViewWillAppear 中的每个 UIController 添加背景更改:

      UITabBarController *bar = [self tabBarController];
      [bar.tabBar setBackgroundImage:[UIImage imageNamed:@"tabDiscountsActive"]];
      

    所以现在当用户按下任何选项卡时,Tab Bar 会更改背景以显示正确的图片。

    当第二个标签被选中时,这是我生成的标签栏:

    【讨论】:

      【解决方案3】:

      我对同样问题的解决方案:

      1、将条形原点y降低,将空白推到屏幕外。

      2、重置背景以确保它刚好覆盖正确的位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 2014-12-09
        • 1970-01-01
        相关资源
        最近更新 更多