如何删除或隐藏工具栏的顶部阴影

时间:2012-12-24 07:06:52

标签: iphone ios uitoolbar

删除工具栏的背景后,使用图像蒙版,工具栏上方仍保留阴影线。我们如何摆脱它?如您所见,通过下图,我想使用工具栏和按钮,但没有背景或顶部阴影。

const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *_img = [[UIImage alloc] init];
UIImage *_maskedImage = [UIImage imageWithCGImage:CGImageCreateWithMaskingColors(_img.CGImage, colorMask)];
[self.navigationController.toolbar setBackgroundImage:_maskedImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

Toolbar top shadow after hiding background with image mask

6 个答案:

答案 0 :(得分:15)

其他答案都没有在iOS7上运行,有些似乎也不适用于较旧的iOS版本。这个(释义http://samplecodebank.blogspot.com/2013/06/UIToolbar-setShadowImage-forToolbarPosition-example.html)对我来说始终在5.1+上工作,并且比生成自定义背景图像和颜色蒙版更简洁,更高效。

toolbar.backgroundColor = [UIColor clearColor];
if ([toolbar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) {
  [toolbar setBackgroundImage:[UIImage new] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
}
if ([toolbar respondsToSelector:@selector(setShadowImage:forToolbarPosition:)]) {
  [toolbar setShadowImage:[UIImage new] forToolbarPosition:UIToolbarPositionAny];
}

答案 1 :(得分:7)

在iOS 7上,设置[toolBar setClipsToBounds:YES]

答案 2 :(得分:5)

还添加此行

[toolbar setShadowImage:_maskedImage forToolbarPosition:UIToolbarPositionAny];

两个重要的注释:

  1. 您还必须设置背景图片,否则无法执行任何操作。
  2. 这适用于iOS 6 +

答案 3 :(得分:2)

首先在项目中添加QuartzCore/QuartzCore框架,然后将其导入.m文件中,如下所示...

#import <QuartzCore/QuartzCore.h>

之后只需添加此波纹管代码......

    yourToolBar.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);

    yourToolBar.layer.shadowOpacity =0.0f;

    yourToolBar.layer.shadowRadius = 0.0f;

希望这对你有帮助......

答案 4 :(得分:0)

iOS 7中没有其他答案对我有用,所以这就是我使用Interface Builder所做的:

  1. 将工具栏添加到UIView。
  2. 将UIView的大小与UIToolbar相同。
  3. 向下拖动UIView的顶部,直到它覆盖UIToolbar的顶部。
  4. 使用“属性”检查器单击“剪辑子视图”。
  5. 这样做会剪掉工具栏的顶部,从而消除灰色阴影。

答案 5 :(得分:-1)

了setBackgroundImage:_maskedImage 需要删除阴影或在工具栏隐藏后调用自定义阴影清除方法