2012-03-29 77 views
1

有几个关于如何向UINavigation栏添加阴影的教程,但是有什么方法最适合在整个阴影应用程序中添加,而不是在单个实例中?添加UINavigationBar Shadow Application Wide?

或者是我的唯一选择,只需在应用程序的每个视图中都有一个子分类的NAB栏?认为可能比这样做更快,更简单?

谢谢。

回答

5

创建的UINavigationBar称为UINavigationBar+dropshadow.m一个类别,并把这个文件

#import <QuartzCore/QuartzCore.h> 

@interface UINavigationBar (dropshadow) 

-(void) applyDefaultStyle; 

@end 

@implementation UINavigationBar (dropshadow) 

-(void)willMoveToWindow:(UIWindow *)newWindow{ 
    [super willMoveToWindow:newWindow]; 
    [self applyDefaultStyle]; 
} 

- (void)applyDefaultStyle { 
    // add the drop shadow 
    self.layer.shadowColor = [[UIColor blackColor] CGColor]; 
    self.layer.shadowOffset = CGSizeMake(0.0, 3.0); 
    self.layer.shadowOpacity = 0.25; 
    self.layer.shouldRasterize = YES; 
} 
@end 
+1

self.clipsToBounds = NO;需要但工作得很好,谢谢! – 2012-03-29 23:51:59

+0

如何解决类别中的(自动)旋转问题? – DrMickeyLauer 2012-07-10 15:10:21

0

中如果你使用iOS6的工作,你可以使用外观代理来做到这一点。

这里的苹果类参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html

EDIT 1固定所需IOS版本(被误iOS5的先前)

编辑2 见本SO问题:Appearance proxy - setShadowImage alternative for iOS 5?为一个代码段

+0

一个代码示例会很棒...我找不到一种方法来使用UIAppearance代理向导航栏中添加阴影... – 2012-12-22 23:16:07

+0

对不起,我编辑了另一个SO问题,提供了一个代码片段到我的帖子。 另外,我刚刚意识到我已将它切换起来,您需要使用iOS6才能使用阴影,而不是iOS5。 现在修复,感谢您的反馈。 – JiaYow 2012-12-23 02:43:28

相关问题