自定义tabbar背景图片太大了

Ste*_*ann 5 iphone objective-c uitabbar ios

我想在我的tabbar上设置自定义背景图片.我的图像名为"tabbarBack.png",大小为640x92.在我的代码中,我将它设置为这样.

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];
Run Code Online (Sandbox Code Playgroud)

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

亲切的问候

eta*_*luz 7

调整图像大小可能会导致图像失去分辨率,因为它是基于像素的.而不是使用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];
Run Code Online (Sandbox Code Playgroud)

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


Par*_*shi 5

试试这两行

self.tabBarController.tabBar.autoresizesSubviews = NO;
self.tabBarController.tabBar.clipsToBounds = YES;
Run Code Online (Sandbox Code Playgroud)


Dai*_*jan 1

NSAddict 的评论:将您的图像重命名为 tabbarBack@2x.png。这称为视网膜显示屏的像素加倍。

如果没有 @2x,iOS 不知道它应该应用比例因子,并且它将按原样使用,尽管它应该减半。

所以黑客是:

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack@2x.png"]];
Run Code Online (Sandbox Code Playgroud)

现实中应该有

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

所以你只说

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];
Run Code Online (Sandbox Code Playgroud)