2012-12-24 11 views
6

Po usunięciu tła paska narzędzi z maską obrazu linia cienia nadal pozostaje nad paskiem narzędzi. Jak się go pozbędziemy? Jak widać, na poniższym obrazku chcę użyć paska narzędzi i przycisków, ale bez tła lub górnego cienia.Jak usunąć lub ukryć górny cień pasków narzędzi

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

Nie edytuj pytania w odpowiedzi, to już nie ma sensu. Odpowiedź na twoje pytanie jest w porządku (możesz także przyjąć własną odpowiedź). – jrturton

+0

@jrturton Oh, ok, dziękuję. Wahałem się użyć "Odpowiedz na moje własne pytanie"; nie był pewien. własność 'setShadowImage' dla' toolbar' uniknęła mnie, ponieważ jest pod 'UIToolbar'; w dokumentacji programisty. –

Odpowiedz

5

Dodaj tę linię również

[toolbar setShadowImage:_maskedImage forToolbarPosition:UIToolbarPositionAny]; 

Dwie ważne uwagi:

  1. You musi również ustawić obraz tła, w przeciwnym razie to nic nie da.
  2. To dla iOS 6+
+0

Czy możesz poprawić format kodu, aby pojawił się w obszarze próbki kodu. Ułatwia czytanie. – Popeye

+0

wykonano przeformatowanie. –

+0

nie działa dla mnie na iOS7. – natbro

2

najpierw dodać QuartzCore/QuartzCore ram w projekcie i po imporcie jest to w pliku jak mieszka .m ...

#import <QuartzCore/QuartzCore.h> 

i po prostu dodać ten kod miech ...

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

    yourToolBar.layer.shadowOpacity =0.0f; 

    yourToolBar.layer.shadowRadius = 0.0f; 

mam nadzieję, że ci to pomoże ...

+0

nie ma to wpływu na iOS7, który mogę powiedzieć. – natbro

-1

setBackgroundImage: _maskedImage potrzeba, aby usunąć cień albo zadzwonić dostosowany cień jasny sposób po Ukryj pasek narzędzi

15

Żaden z pozostałych odpowiedzi pracował iOS7, niektóre nie wydają się działać konsekwentnie na starszych wersjach iOS albo. Ta (parafrazując http://samplecodebank.blogspot.com/2013/06/UIToolbar-setShadowImage-forToolbarPosition-example.html) działa konsekwentnie w wersji 5.1+ i jest zwięzła i bardziej wydajna niż generowanie niestandardowych obrazów tła i masek kolorów.

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

Żaden z pozostałych odpowiedzi pracował dla mnie w iOS 7, więc o to, co zrobiłem za pomocą interfejsu Builder:

  1. Dodaj pasek do UIView.
  2. Rozmiar UIView to samo, co pasek UIToolbar.
  3. Przeciągnij górną część UIView, aż po prostu zakryje górną część paska UIToolbar.
  4. Za pomocą Inspektora atrybutów kliknij pozycję "Podpowiedzi klipów".

Wykonanie tej czynności spowoduje przycięcie górnej części paska narzędzi, a tym samym usunięcie szarego cienia.

Powiązane problemy