自定义标签栏背景图片太大
Posted
技术标签:
【中文标题】自定义标签栏背景图片太大【英文标题】:custom tabbar background image is too big 【发布时间】:2012-12-17 10:00:57 【问题描述】:我正在尝试在我的标签栏上设置自定义背景图像。我有名为“tabbarBack.png”的图像,大小为 640x92。在我的代码中,我是这样设置的。
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]];
当我在设备上测试它时,标签栏比它应该的大两倍? 有什么帮助吗?
亲切的问候
【问题讨论】:
将图片重命名为 tabbarBack@2x.png。这称为 Retina 显示屏的像素加倍 【参考方案1】:调整图像大小可能会导致它失去分辨率,因为它是基于像素的。 与其使用 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。最后,如果您将其他图像作为子视图添加到标签栏,请确保在添加背景图像之前添加这些图像。
【讨论】:
【参考方案2】:试试下面两行
self.tabBarController.tabBar.autoresizesSubviews = NO;
self.tabBarController.tabBar.clipsToBounds = YES;
【讨论】:
【参考方案3】: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"]];
【讨论】:
当我这样做的时候。标签栏变得更大了。 它不再起作用了,因为现在连苹果都支持多种分辨率和自动布局... !?你当然必须为正确的 res 设置正确的图像——没有理由拒绝投票:)【参考方案4】:检查你是否有这一行:
[[UITabBar appearance] setShadowImage:image];
您必须将其删除或设置为零。
【讨论】:
以上是关于自定义标签栏背景图片太大的主要内容,如果未能解决你的问题,请参考以下文章