2012-12-24 169 views
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]; 

Toolbar top shadow after hiding background with image mask

+0

不要將您的問題編輯爲答案,它不再有意義。回答你自己的問題是好的(你也可以接受你自己的答案)。 – jrturton

+0

@ jrturton哦,好的,謝謝。我猶豫了用「回答我自己的問題」;不確定。 'toolbar'的'setShadowImage'屬性迴避了我,因爲它在'UIToolbar'下;在開發者文檔中。 –

回答

5

添加此行也

[toolbar setShadowImage:_maskedImage forToolbarPosition:UIToolbarPositionAny]; 

兩個重要注意事項:

  1. 你還必須設置背景圖像,否則這將不會執行任何操作。
  2. 這是爲iOS 6+
+0

你能改正你的代碼格式,所以它出現在代碼示例區域。使閱讀更容易。 – Popeye

+0

完成重新格式化。 –

+0

在iOS7上不適用於我。 – natbro

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; 

希望對您有所幫助...

+0

這對我可以說的iOS7沒有影響。 – natbro

-1

了setBackgroundImage:_maskedImage 需要去除陰影否則打電話的工具欄隱藏後定製的影子清晰的方法

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

沒有其他的答案中的iOS 7爲我工作,所以這裏是我做過什麼使用Interface Builder:

  1. 工具欄添加到一個UIView。
  2. 調整UIView的大小與UIToolbar相同。
  3. 向下拖動UIView的頂部,直到它覆蓋UIToolbar的頂部。
  4. 使用Attribute Inspector單擊「Clip Subviews」。

這樣做會剪掉工具欄的頂部,從而消除灰色陰影。

相關問題