UITabBar 上的图像被压扁
Posted
技术标签:
【中文标题】UITabBar 上的图像被压扁【英文标题】:Image on UITabBar gets squished 【发布时间】:2014-04-04 23:42:02 【问题描述】:嘿,我正在使用带有超大图像的自定义大小的 UITabBar。
我像这样将图像添加到标签栏项目:
UITabBar *tabBar = self.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
[tabBarItem1 setImage:[UIImage imageNamed:@"image"]];
[tabBarItem1 setImageInsets:UIEdgeInsetsMake(0, 0, 20, 0)];
另外,因为图像更大,我希望它们更多地悬停在标签栏的中间,所以我添加了插图。
我的问题是当我对插图进行编程然后单击按钮时,按钮会自行挤压。它保持它的宽度,但它的高度压在它自己身上。我当然不希望发生这种情况,但我似乎无法找出发生了什么。
谢谢,Krtko
-模组注意事项请锁定此帖
- 回答我问题的人的注意事项。感谢您的帮助,但当时这是一个已知的错误,所以请停止回答这个问题。谢谢
【问题讨论】:
【参考方案1】:你只在 ios 7 上看到这个吗?
7.1 似乎引入了标签栏图像插入的错误。如果您不断点击或按住选项卡,它会根据插图增大或缩小。如果您点击另一个标签,标签栏图像会恢复正常吗?
【讨论】:
是的,很糟糕,谢谢你让我知道。所以我已经开始并在每个图标的底部添加了一大块 alpha。你觉得你能帮我做点别的吗?现在我只能点击大约 75% 的按钮。顶部不会触发,并且会触发它下面的任何子视图。我确实调整了标签栏框架的大小,但这并没有解决任何问题。谢谢:) @Krtko 不要使用 cmets 提出第二个问题。相反,提出一个新问题! 到目前为止,我所知道的唯一确定的解决方法是根本不使用插图。我的一个朋友最终走上了这条路。我正在等待他们是否解决此问题,因为它不会破坏任何功能。另外,我和你一样,我的图片更大,而且我没有使用标题。 伙计,我在这个问题上花了很长时间,发誓是我。你不知道你救了我多少,哈哈。如果可以,请投票一百万次。 仅供参考,我检查并插入标题确实有效【参考方案2】:当使用 UIEdgeInsetsMake 时,重要的一点是让顶部插入“BE EQUAL”到底部插入。 例如:item.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
【讨论】:
这个答案修复了上/下和右/左的错误。缺点是您无法调整图像大小,只能移动它。【参考方案3】:删除图片的插图。使用与您想要的尺寸完全一致的图像。在 Apple 解决此问题之前,我们必须遵循这种方法。
【讨论】:
【参考方案4】:您可以在标签栏顶部放置一个 UIView,并在 UIView 中添加一个 UITapGestureReognizer。点击时,我确定它在哪里,并为标签栏调用适当的选定项目。 Hack,但效果很好,可以让您将插入值保持为您想要的任何值。
@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
希望对你有帮助。
【讨论】:
【参考方案5】:你只需检查 ios7 是否在里面再次 setFrame
(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController【讨论】:
以上是关于UITabBar 上的图像被压扁的主要内容,如果未能解决你的问题,请参考以下文章