Setting the height of UITabBar
我通过设置每个项目的图像创建了一个简单的自定义标签栏,如下所示:
1 2 3 4 5 6 7 8
| UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
[item0 setFinishedSelectedImage:[UIImage imageNamed:@"activity_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"activity.png"]];
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"agenda_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"agenda.png"]];
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"settings_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]]; |
虽然这很好用,但我注意到我的标签栏下有一个黑色的空白区域
我的图像高度为 44 像素,但我想我必须以某种方式更改标签栏的高度。
tabBar 本身是 49px,它在您的图像后面以黑色呈现(可能在 [UITabBar layoutSubviews] 中)。然后您的图像呈现在顶部。偏移的原因是因为你提供的图片太大了,UITabBar需要30x30px的图标,而不是整个UITabBarItem的图片。
这里有几件事可以尝试:
只提供一个 30x30px 的图标,而不是整个标签按钮
在选项卡项上设置图像后,请尝试以下操作:
[item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)]; // play with insets until it renders correctly
子类化 UITabBar 并覆盖 layoutSubviews 以首先调用 super,然后根据需要重新定位图像。不推荐,它可能会在未来的 iOS 版本中崩溃。
检查这个:
1
| [self.tabBar setFrame:CGRectMake(self.tabBar.frame.origin.x, self.tabBar.frame.origin.y - 30, self.tabBar.frame.size.width, self.tabBar.frame.size.height + 30)]; |
-
这一直有效,直到您从选项卡栏中选择一个项目,然后它会重置。你怎么解决?
使用 -
1
| tabBar.frame=CGRectMake(x,y,w,h); |
这样你就可以设置xCord、yCord、宽度和高度。
- 谢谢,但奇怪的是,当我将 y 设置为 self.window.frame.size.height 时,它仍然可见几个 px。当我使用 [tabBar setFrame:CGRectMake(0.0f, self.window.frame.size.height - 44, self.window.frame.size.width, 44.0f)]; 时,我仍然可以看到突出显示其下方黑色 gab 中的选定选项卡
-
您需要记录这些 y 值并检查您是否正确获取这些值?
-
self.window.frame.size.height: 480, taBar.frame.origin.y: 436, tabBar.frame.size.heigh: 44. 当我截图并在photoshop中检查时,标签栏只有428px y 轴。
-
从我所看到的,看起来默认的高亮覆盖正在向上推我的标签栏
-
好像?不确定吗?你需要在你的代码和xib中调试吗?
-
你是什??么意思?我正确设置了值,它记录了正确的值。然而,标签栏是在 428px 而不是 436 处绘制的。(正如它所记录的那样)
-
如果它正在记录 428,那么它将在 428 处绘制,除非在某个地方我们再次修改它?
-
它应该记录 436px。但是因为有一个黑色的gab,我检查了photoshop中的值,并且tabbar被绘制在428px。 (这个 428 值从未在我的代码中设置!)
-
你可以添加完整标签栏的屏幕截图,或者如果可能的话,可以全屏显示,以便我能得到更多的想法。您还可以通过将元素的背景颜色设置为红色、绿色等来检查大小,这将为您提供确切的想法,您的 uielement 在哪里。\\\\
-
这是该应用程序的屏幕截图:dl.dropbox.com/u/274185/...。我尝试将标签栏背景设置为蓝色,但它只是显示为黑色。如您所见,它的高度为 44 像素,但由于某种原因,它似乎更大。
-
你在哪里定义标签栏控制器的框架?
-
在我的应用程序委托中,就在我调用 [self.window makeKeyAndVisible] 之前;
-
pastebin.com/AQjG2kXu,所以基本上我创建了一个带有 3 个 UINavigationController 的标签栏并添加了 ZUUIRevealController。 (也在没有 ZUUIRevealController 的情况下尝试过,但同样的问题)
-
仍然有同样的问题,我尝试了几件事,但似乎没有任何帮助。