2015-12-08 18 views
8

enter image description hereJak dodać efekt cienia na pasku UINavigation

Witam, Chcę dodać ten rodzaj cienia dla mojego NAvigationBar W jaki sposób można to zrobić.

Tak właśnie próbowałem dodać cień.

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
self.navigationController.navigationBar.shadowImage=[UIImage new]; 

self.navigationController.navigationBar.translucent=YES; 

self.navigationController.navigationBar.topItem.titleView.tintColor=[UIColor whiteColor]; 
self.navigationController.navigationBar.titleTextAttributes=[NSDictionary dictionaryWithObject:[UIFont fontWithName:@"HelveticaNeue" size:15.0f] forKey:NSFontAttributeName]; 
self.navigationController.navigationBar.topItem.title=strNavigtionTitle; 
self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName]; 
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backarrow"] style:UIBarButtonItemStylePlain target:self action:@selector(revealToggle :)]; 
[self.navigationController navigationBar].tintColor = [UIColor whiteColor]; 

[self.navigationController navigationBar].layer.shadowColor=[UIColor colorWithRed:53.0/255.0 green:108.0/255.0 blue:130.0/255.0 alpha:1.0f].CGColor; 
[self.navigationController navigationBar].layer.shadowOffset=CGSizeMake(0, 20); 
[self.navigationController navigationBar].layer.shadowOpacity=0.8; 
[self.navigationController navigationBar].layer.shadowRadius=5.5; 

Ale to tylko dodaje cień do strzałki i mojego tytułu Apply Leave. Ale chcę dodać cień jak na tym obrazku. Powinien być między NavigationBar i moim głównymJak mogę to zrobić? Proszę pomóż mi. Dzięki

+0

możesz pokazać swój obraz wyjściowy –

+0

Pytam, czy partner daje mi obraz tła z cieniem. – AechoLiu

+0

obraz tła paska nawigacyjnego? – user1960169

Odpowiedz

3

mogłem osiągnąć w ten sposób. Usunąłem dodanie cienia do paska nawigacji. Zamiast tego umieściłem ten sam widok rozmiaru pod paskiem nawigacji. Ustaw kolor tła na kolor paska nawigacji. Następnie dodano cień do tego widoku. To działało idealnie.

-(void)setupNavigationBar 
{ 
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
    self.navigationController.navigationBar.shadowImage=[UIImage new]; 

    self.navigationController.navigationBar.translucent=YES; 
    self.navigationController.navigationBar.topItem.titleView.tintColor=[UIColor whiteColor]; 
    self.navigationController.navigationBar.titleTextAttributes=[NSDictionary dictionaryWithObject:[UIFont fontWithName:@"HelveticaNeue" size:15.0f] forKey:NSFontAttributeName]; 
    self.navigationController.navigationBar.topItem.title=strNavigtionTitle; 
    self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName]; 
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backarrow"] style:UIBarButtonItemStylePlain target:self action:@selector(revealToggle :)]; 
    [self.navigationController navigationBar].tintColor = [UIColor whiteColor]; 

    UIView *shadow=[[UIView alloc] initWithFrame:CGRectMake(0, 0, dm.screenWidth, 64)]; 
    [shadow setBackgroundColor:[UIColor colorWithRed:62.0/255.0 green:81.0/255.0 blue:119.0/255.0 alpha:1.0]]; 
    shadow.layer.shadowColor=[UIColor colorWithRed:51/255 green:76/255 blue:104/255 alpha:1.0].CGColor; 
    shadow.layer.shadowOffset=CGSizeMake(0, 15); 
    shadow.layer.shadowOpacity=0.12; 
    shadow.layer.shadowRadius=4.5; 
    [self.view addSubview:shadow]; 
} 
12

Tutaj musisz zaimportować framework QuartzCore.

self.navigationController.navigationBar.layer.borderColor = [[UIColor whiteColor] CGColor]; self.navigationController.navigationBar.layer.borderWidth=2;// set border you can see the shadow 
self.navigationController.navigationBar.layer.shadowColor = [[UIColor blackColor] CGColor]; 
self.navigationController.navigationBar.layer.shadowOffset = CGSizeMake(1.0f, 1.0f); 
self.navigationController.navigationBar.layer.shadowRadius = 3.0f; 
self.navigationController.navigationBar.layer.shadowOpacity = 1.0f; 
self.navigationController.navigationBar.layer.masksToBounds=NO; 

Inną rzeczą Trzeba

set self.layer.masksToBounds = NO; 

Domyślna wartość tej właściwości jest TAK, co oznacza, że ​​choć cień staje się, że nie będą renderowane poza Granice widoku, co oznacza, że ​​w ogóle go nie widać.

Jeśli animowanie ten pogląd w jakikolwiek sposób, należy również dodać linię:

self.layer.shouldRasterize = YES; 
+0

Powoduje to dodanie cienia do tytułu paska nawigacji i ikony strzałki, a nie do paska – user1960169

+0

jego dodanie do całego paska poniżej paska jego wyświetlania. Proszę sprawdzić, czy ustawiłeś maski na ... –

+0

Yeas ustawiam masksTobound do NO – user1960169

7
self.navigationController.navigationBar.layer.shadowColor = [[UIColor blackColor] CGColor]; 
self.navigationController.navigationBar.layer.shadowOffset = CGSizeMake(2.0f, 2.0f); 
self.navigationController.navigationBar.layer.shadowRadius = 4.0f; 
self.navigationController.navigationBar.layer.shadowOpacity = 1.0f; 
+0

Jeśli pasek nawigacji jest półprzezroczysty, ten kod stosuje cień do tekstu i ikon przycisków. – MLBDG

+0

próbowałem tego kodu na półprzezroczystym – vaibby

Powiązane problemy