【发布时间】:2012-03-29 23:34:37
【问题描述】:
有一些关于如何向 UINavigation 栏添加阴影的教程,但是是否有任何方法最适合在整个应用程序范围内而不是在单个实例中添加这个阴影?
或者我唯一的选择是在我的应用程序的每个视图中都简单地有一个子类导航栏?认为可能有比这样做更快、更简单的方法吗?
谢谢。
【问题讨论】:
标签: iphone objective-c uinavigationbar
有一些关于如何向 UINavigation 栏添加阴影的教程,但是是否有任何方法最适合在整个应用程序范围内而不是在单个实例中添加这个阴影?
或者我唯一的选择是在我的应用程序的每个视图中都简单地有一个子类导航栏?认为可能有比这样做更快、更简单的方法吗?
谢谢。
【问题讨论】:
标签: iphone objective-c uinavigationbar
创建一个名为UINavigationBar+dropshadow.m 的UINavigationBar 类别并将其放入文件中
#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
【讨论】:
如果您使用的是 iOS6,则可以使用 Appearance 代理来执行此操作。
这是 Apple 类参考: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? 获取代码 sn-p
【讨论】: