6

我拿了一张普通UITabBar的并将它的背景图像更改为具有较低高度的自定义背景图像,因此我更改heightframe. 起初我得到的是标签栏下方的空白区域。所以我也改变originframe。但是现在空白区域已经向上移动到标签栏上方,结果如下:

标签栏上方的空间

这是在 AppDelegate 中声明标签栏的代码:

self.tabContoller = [[UITabBarController alloc] init];
//customizing the tabbar
UIImage * tabBackgroundImage = [UIImage imageNamed:@"tabBarBg.png"];
self.tabContoller.tabBar.backgroundColor = [UIColor colorWithRed:245.f/255.f green:245.f/255.f blue:245.f/255.f alpha:255.f/255.f];
self.tabContoller.tabBar.backgroundImage = tabBackgroundImage;
//setting the tabbar height to the correct height of the image
CGRect tabR = self.tabContoller.tabBar.frame;
CGFloat diff = tabR.size.height - tabBackgroundImage.size.height;
tabR.size.height = tabBackgroundImage.size.height;
tabR.origin.y += diff;
self.tabContoller.tabBar.frame = tabR;

我想问题在于ViewControllers 将自己绘制在一个恒定空间之上,该空间是常规标签栏的高度。有没有办法改变它?

4

4 回答 4

7

将您的 UITabBarController 的子视图更改为全尺寸框架,这对我有用:

[[yourTabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 480)];
于 2012-05-27T09:56:39.047 回答
7

尝试创建您自己的从 UITabBar 扩展的类并使用此函数:

- (CGSize)sizeThatFits:(CGSize)size {
    CGSize auxSize = size;
    auxSize.height = 54; // Put here the new height you want and that's it
    return auxSize;
}

这会将 UITabBar 调整为您想要的大小。简单易行。

于 2012-05-30T14:59:09.460 回答
0

如果像@JoaT 提到的那样更改框架不起作用,请确保视图控制器的视图具有正确的自动调整大小掩码集。

SO链接可能会有所帮助。

于 2012-05-24T13:23:07.140 回答
0

我尝试通过更改标签栏的高度和原点,对我来说它工作正常。您可以尝试增加视图控制器的高度。

于 2012-05-24T13:36:20.607 回答