如何使用resizableImageWithCapInsets将标签栏中的图像设置为全宽

时间:2016-02-23 10:25:53

标签: ios objective-c uitabbar uitabbaritem

我想要实现的是让中间标签图像在不同的分辨率(i5,i6,i6 + ...)上拉伸,有5个标签,因此中间的标签总是1/5的屏幕宽度。< / p>

此代码未在中间选项卡的整个宽度上拉伸:

UITabBarItem *timelineTabBarItem = [[UITabBarItem alloc] initWithTitle:@"Middle"
                                                                 image:[[[UIImage imageNamed:@"tab3-on"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 31, 0, 32)] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
                                                         selectedImage:[[[UIImage imageNamed:@"tab3-off"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 31, 0, 32)] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
timelineViewController.tabBarItem = timelineTabBarItem;

在i6 +上,我看到标签中心的图像。

我缺少什么/如何正确填充标签图片?

更新

这是预览图片:http://i.imgur.com/9IKISIy.png

绿色是应覆盖深蓝色区域的原始图像。

1 个答案:

答案 0 :(得分:0)

试试这个,

UIImageView imgBgView =  [[UIImageView alloc] initWithFrame:CGRectMake(itemWidth*itemIndex,0,itemWidth,self.tabBarViewController.tabBar.frame.size.height)];
imgBgView.image = [[UIImage imageNamed:@"tab_icon_checkin_inactive.png"] stretchableImageWithLeftCapWidth:0 topCapHeight:0];
imgBgView.contentMode = UIViewContentModeScaleAspectFit;
[self.tabBar.tabBar insertSubview:imgBgView atIndex:0];

这里itemWidth是一个要使用它的标签的宽度,

float itemWidth = [[UIScreen mainScreen] bounds].size.width / (float)(self.tabBarViewController.tabBar.items.count);

它会将图像设置在tabbar的中间选项卡中。

希望它会帮助你。