我正在尝试在我的标签栏上设置自定义背景图片。我的图像名为" tabbarBack.png",大小为640x92。在我的代码中,我将其设置为这样。
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];
当我在设备上测试它时,tabbar是它应该的两倍大? 有什么帮助吗?
亲切的问候
答案 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"]];
实际上应该有
所以你只说
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];
答案 3 :(得分:1)
检查您是否有这一行:
[[UITabBar appearance] setShadowImage:image];
您必须将其删除或设置为nil。