题 在iOS 7中删除UIToolbar发际线


在iOS 7中,Apple发生了变化 UIToolbar 在其顶部显示1px发际线。在某些情况下,这在视觉上会分散注意力,并且似乎没有任何公共API可以删除它。

设置shadowImage不起作用。

我正在寻找一种以相对干净的方式去除发际线的方法,并保持普通的背景模糊。


29
2017-10-01 07:57


起源


iOS8怎么样? - Sunil_Vaishnav


答案:


如果设置youBar.clipsToBounds = YES,则发线会消失。

希望这有帮助。

[编辑]

对于navigationBar底部发际线,解决方案在这里 https://stackoverflow.com/a/18180330/2011578 也很棒。


83
2017-10-14 13:25



啊,好主意。我还注意到,阴影图像位于导航栏下方 - Thyraz
好的解决方案谢谢 - kevinl
只有你的解决方案适合我! - Allen
应该选择这个作为正确的答案。这对我也有用。 - c1pherB1t
聪明的答案,来自我的+1! - NSPratik


细线边框是工具栏的UIImageView子视图,您可以像这样隐藏它:

        for (UIView *subView in [self.toolbar subviews]) {
            if ([subView isKindOfClass:[UIImageView class]]) {
                // Hide the hairline border
                subView.hidden = YES;
            }
        }

5
2017-10-13 12:41



对这样的内部实现细节做出假设总是一个坏主意。 Apple可以随时更改实施。 - Greg Brown


这条线是它的shadowImage。 可以通过应用空的UIImage简单地删除它。 根据文档,您还必须设置自定义背景图像

- (void)viewDidLoad {
  [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
  self.navigationController.navigationBar.shadowImage = [[UIImage alloc ]init];
}

请注意:如果您需要设置自己的图像,则半透明将不起作用。


5
2017-10-14 10:16



我想我应该澄清我的问题。我需要删除发际线,但保持模糊(所以没有设置背景图像)。 - fzwo
这曾经在iOS 6中工作,但在iOS 7中,将阴影图像设置为透明图像将不起作用 - 在绘制阴影的地方有一个非常微弱,明亮的标记。 - tinrocket


使用Storyboard时

self.clipsToBounds = true

可以在Runtime属性中为工具栏设置。这将隐藏发际线。 已在iOS 7和8中验证。


4
2017-11-12 06:13





它可以在故事板上轻松解决:

选择添加为UIBarButtonItem容器的视图并设置其“剪辑子视图”和运行应用程序。

enter image description here


2
2017-12-26 15:50





这个解决方案对我有用...试用iOS 7

[self.navigationController.navigationBar setShadowImage:[UIImage new]];

1
2018-01-23 08:14





不完全是你想要的,但肯定这个答案会帮助别人。

如果要更改UINavigationBar或UIToolbar的底部边框(阴影)颜色而不是隐藏它,则应将背景图像和阴影图像设置为条形。

用于更改UINavigationBar的底边(阴影)

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@“yourImageName”] forBarMetrics:UIBarMetricsDefault];        [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@“yourImageName”]];

用于更改UIToolbar的底部边框(阴影)

[yourToolBar setBackgroundImage:[UIImage imageNamed:@“yourImageName”]   forToolbarPosition:UIBarPositionBottom   barMetrics:UIBarMetricsDefault];

[yourToolBar setShadowImage:[UIImage imageNamed:@“yourImageName”]   forToolbarPosition:UIBarPositionBottom];


1
2018-05-16 17:17