我正在尝试在我的标签栏上设置自定义背景图像。我有名为“tabbarBack.png”的图像,大小为 640x92。在我的代码中,我是这样设置的。
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];
当我在设备上测试它时,标签栏比它应该大两倍?有什么帮助吗?
亲切的问候
我正在尝试在我的标签栏上设置自定义背景图像。我有名为“tabbarBack.png”的图像,大小为 640x92。在我的代码中,我是这样设置的。
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];
当我在设备上测试它时,标签栏比它应该大两倍?有什么帮助吗?
亲切的问候
调整图像大小可能会导致其分辨率丢失,因为它是基于像素的。与其使用 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。最后,如果您将其他图像作为子视图添加到选项卡栏,请确保在添加背景图像之前添加这些图像。
试试下面两行
self.tabBarController.tabBar.autoresizesSubviews = NO;
self.tabBarController.tabBar.clipsToBounds = YES;
NSAddict 的评论:将您的图像重命名为 tabbarBack@2x.png。这称为 Retina 显示器的像素加倍。
如果没有@2x,iOS 不知道它应该应用一个比例因子,它会按原样使用,尽管它应该减半。
所以一个黑客是:
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack@2x.png"]];
现实中应该有
所以你只说
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];
检查您是否有此行:
[[UITabBar appearance] setShadowImage:image];
您必须将其删除或设置为零。