6

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

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];

使用图像蒙版隐藏背景后的工具栏顶部阴影

4

6 回答 6

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];
}
于 2013-11-10T18:47:12.467 回答
7

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

于 2014-01-14T14:40:35.123 回答
5

也添加这一行

[toolbar setShadowImage:_maskedImage forToolbarPosition:UIToolbarPositionAny];

两个重要说明:

  1. 您还必须设置背景图像,否则这不会做任何事情。
  2. 这适用于 iOS 6+
于 2012-12-24T07:50:29.333 回答
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;

希望这对你有帮助...

于 2012-12-24T07:14:34.160 回答
0

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

  1. 将工具栏添加到 UIView。
  2. UIView 的大小与 UIToolbar 相同。
  3. 向下拖动 UIView 的顶部,直到它刚好覆盖 UIToolbar 的顶部。
  4. 使用属性检查器单击“剪辑子视图”。

这样做会将工具栏的顶部剪掉,从而消除灰色阴影。

于 2013-12-30T00:22:29.163 回答
-1

setBackgroundImage:_maskedImage 需要移除阴影或者工具栏隐藏后调用自定义的阴影清除方法

于 2012-12-24T07:18:40.943 回答