UITabBar上的图像被压扁了

时间:2014-04-04 23:42:02

标签: ios uitabbar

嘿我正在使用带有超大图像的自定义大小的UITabBar。

我将图像添加到标签栏项目,如下所示:

UITabBar *tabBar = self.tabBar;
    UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
    [tabBarItem1 setImage:[UIImage imageNamed:@"image"]];
    [tabBarItem1 setImageInsets:UIEdgeInsetsMake(0, 0, 20, 0)];

另外因为图像较大,我希望它们在标签栏的中间悬停更多,所以我添加插图。

我的问题是当我对插图进行编程然后单击按钮时,按钮会自动搜索。它保持宽度,但它的高度在它自己的范围内。我当然不希望这种情况发生,但我似乎无法发现最新情况。

谢谢,Krtko

-Note for Mods请锁定此主题

- 回答我的问题的人。我感谢你的帮助,但当时这是一个众所周知的错误,所以请停止回答这个问题。谢谢

5 个答案:

答案 0 :(得分:15)

你是否只在iOS 7上看到这个?

7.1似乎引入了标签栏图像插入的错误。如果您不断点击或按住选项卡,它会根据插图增大或缩小。如果点击另一个标签,标签栏图像会恢复正常吗?

答案 1 :(得分:10)

使用UIEdgeInsetsMake时,重要的一点是将顶部插入“BE EQUAL”放在底部插图中。 例如:item.imageInsets = UIEdgeInsetsMake(6,0,-6,0);

答案 2 :(得分:0)

删除图像的插图。使用与您想要的尺寸完全相同的图像。我们必须遵循这种方法,直到Apple修复此问题。

答案 3 :(得分:0)

您可以在标签栏的顶部放置UIView,并将UITapGestureReognizer添加到UIView。点击时,我确定它的位置并为标签栏调用相应的选定项目。哈克,但工作得非常好,让你可以将你的插入值保存到你想要的任何地方。

 @property UIView  tabBarCover;//place on top of uitabbar and give it clear color background

 - (void)viewDidLoad
 {
   [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
    UITapGestureRecognizer *singleFingerTap =
                        [[UITapGestureRecognizer alloc] initWithTarget:self
                                        action:@selector(handleSingleTap:)];
   [tabBarCover addGestureRecognizer:singleFingerTap];

 }

然后每次点击UIView时,根据用户触摸的位置设置所选项目。我有3个标签栏项,所以我只为x坐标做了一些逻辑。

-(void) handleSingleTap:(UITapGestureRecognizer *) recognizer
{
    CGPoint location = [recognizer locationInView:[recognizer.view superview]];
    //NSLog(@"tapped it %lf", location.x);
    if(location.x<=105){
        //1st 3rd tapped, do something

    }
    else if(location.x >105 && location.x<=210)
    {
       //do nothing, selected item stays same. this is glas
    }else{
       //must be in 3rd section so do that load

    }

}

希望它有所帮助。

答案 4 :(得分:0)

你只需检查ios7然后再次在

中设置setFrame
  • (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController