在iOs7下,而不是早期版本,我有一条线穿过我的标签栏(在下面的链接中以示例图片上的绿色箭头显示)。
我不知道问题出在哪里。知道怎么纠正吗?
非常感谢。
答案 0 :(得分:11)
如果您指的是条形顶部的几个像素阴影,则很容易删除。您所要做的就是在标签栏上启用clipsToBounds,如下所示:
[self.tabBarController.tabBar setClipsToBounds:YES];
答案 1 :(得分:5)
创建TabBar后添加这两行
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
答案 2 :(得分:4)
UIImage* tabBarBackground = [UIImage imageNamed:@"transparentImage.png"];
[[UITabBar appearance] setShadowImage:tabBarBackground];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
///// transparentImage.png - 清空1x1px图像 ////这解决了我的问题
答案 3 :(得分:1)
我认为您必须检查iOS 7中UITabBar的高度。苹果可能会降低UITabBar的高度,因为根据UITabBar的高度,您必须重新设计图像以获得准确的结果。
答案 4 :(得分:0)
使用它 [[UITabBar外观] setShadowImage:[UIImage imageNamed:@“transparentImage.png”]];
transparentImage.png可以是0像素大小为1x1像素的图像
答案 5 :(得分:0)
如果你正在努力使用比UITabBar高度更高的自定义UITabBarItem,可以使用CALayer实现一个让你保留默认UITabBar shadowImage和backgroundImage(带有模糊效果)的解决方案。
我在UITabBarController子类中使用此代码:
- (id) init
{
if ((self = [super init]))
{
self.delegate = self;
CALayer * superLayer = self.tabBar.layer;
CALayer * layer = [CALayer layer];
layer.bounds = CGRectMake (0.0f, 0.0f, 62.0f, 56.0f);
layer.contents = (id) [UIImage imageNamed: @"custom-tabbaritem"].CGImage;
layer.anchorPoint = CGPointMake (0.5f, 1.0f);
layer.position = CGPointMake (superLayer.bounds.size.width / 2.0f, superLayer.bounds.size.height);
layer.zPosition = 1.0f;
[self.tabBar.layer addSublayer: layer];
}
return self;
}
请注意,您也可以使用layer.frame = CGRectMake (...)
代替bounds
,anchorPoint
和position
。我通过将子图层锚定到UITabBar
的底部来使用这些图像以更好地处理具有各种高度的图像。
通过实现诸如tabBarController:shouldSelectViewController:
之类的UITabBarControllerDelegate方法,可以使此UITabBarItem
执行自定义操作,例如呈现模态视图控制器。
在这种情况下,我使用普通UIViewController
作为自定义UITabBarItem
的视图控制器(其他都是子类):
- (BOOL) tabBarController: (UITabBarController *) tabBarController
shouldSelectViewController: (UIViewController *) viewController
{
if ([viewController isMemberOfClass: [UIViewController class]])
{
SomeViewController * modal = [SomeViewController new];
[tabBarController presentViewController: modal
animated: YES
completion: nil];
modal = nil;
return NO;
}
return YES;
}