2015-12-08 29 views
8

enter image description hereUINavigation çubuğu için bir gölge efekti nasıl eklenir

Merhaba, ben bunu yapabilirim nasıl NAvigationBar için gölge bu tür eklemek istiyorum.

Gölge eklemeye çalıştığım budur.

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

Ancak bu yalnızca ok ve Apply (Uygula) izni başlığım için bir gölge ekler. Ama bu resimdeki gibi bir gölge eklemek istiyorum. NavigationBar ile ana UIView arasında olmalıyım. Bunu nasıl yapabilirim? Lütfen bana yardım et. Teşekkürler

+0

canu u ben ortağı bana gölge bir arka plan görüntüsü verir soracaktır çıktı görüntüsünü –

+0

göstermektedir. Gezinme çubuğu için – AechoLiu

+0

arka plan resmi? – user1960169

cevap

3

. Gezinme çubuğuna gölge ekledim. Bunun yerine, gezinme çubuğunun altında aynı boyut görünümü koyuyorum. Arka plan rengini gezinme çubuğu rengine ayarlayın. Sonra bu görünüm için gölgeyi ekledi. Bu mükemmel çalıştı.

-(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

Buradan QuartzCore çerçevesini içe aktarmanız gerekecek.

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; 

Başka bir şey Bu özellik için varsayılan değer gölge render olsa bile, bu sınırları dışında işlenen olmayacak anlamına gelir EVET ise

set self.layer.masksToBounds = NO; 

zorunda Görseli, yani hiç görmediğiniz anlamına gelir. Eğer herhangi bir şekilde bu görüşü animasyon ediyorsanız

, ayrıca bu satırı eklemek gerekir: Ben bu şekilde kazanmasını sağlayabilecek

self.layer.shouldRasterize = YES; 
+0

Bu, yalnızca gezinti çubuğu başlığına ve ok simgesine – user1960169

+0

çubuğunun çubuğun altındaki çubuğa eklenmesini değil, gösterilmesini sağlar.Lütfen maskelemeyi kontrol edin NO: –

+0

Yeas masksTobound'u ayarlayın 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

Gezinme çubuğu yarı saydamsa, bu kod gölgeyi metne ve düğme simgelerine uygular. – MLBDG

+0

havent bu kodu yarı saydam olarak denedi – vaibby