自定义tabbar背景图片太大了

时间:2012-12-17 10:00:57

标签: iphone objective-c ios uitabbar

我正在尝试在我的标签栏上设置自定义背景图片。我的图像名为" tabbarBack.png",大小为640x92。在我的代码中,我将其设置为这样。

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];

当我在设备上测试它时,tabbar是它应该的两倍大? 有什么帮助吗?

亲切的问候

4 个答案:

答案 0 :(得分:6)

调整图像大小可能会导致图像失去分辨率,因为它是基于像素的。 而不是使用setBackgroundImage(不允许你调整图像大小)和改变Xcode之外的图像,为什么不插入背景图像作为标签栏的子视图?这样,您可以在XCode中调整图像的帧大小并保持图像文件不变!

/* TAB BACKGROUND IMAGE */
UIImageView *tabBackground = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 49)];
tabBackground.image = [UIImage imageNamed:@"BackgroundImage.png"];
tabBackground.contentMode = UIViewContentModeScaleAspectFill;
[self.tabBar insertSubview:tabBackground atIndex:0];

默认标签尺寸为320x49 - 如果标签栏尺寸为自定义,请调整上面的initWithFrame:CGRectMake。最后,如果您要将其他图像作为子视图添加到标签栏,请确保在添加背景图像之前添加这些图像。

答案 1 :(得分:5)

试试这两行

self.tabBarController.tabBar.autoresizesSubviews = NO;
self.tabBarController.tabBar.clipsToBounds = YES;

答案 2 :(得分:1)

NSAddict的评论:将您的图片重命名为tabbarBack@2x.png。这称为Retina显示器的像素倍增。

没有@ 2x iOS不知道它应该应用比例因子,它将按原样使用,虽然它应该减半。

所以黑客就是:

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack@2x.png"]];

实际上应该有

  • tabbarBack png(45 px左右)
  • tabbarBack@2x.png

所以你只说

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];

答案 3 :(得分:1)

检查您是否有这一行:

    [[UITabBar appearance] setShadowImage:image];

您必须将其删除或设置为nil。