嘿我正在使用带有超大图像的自定义大小的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请锁定此主题
- 回答我的问题的人。我感谢你的帮助,但当时这是一个众所周知的错误,所以请停止回答这个问题。谢谢
答案 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