0

嘿,我正在尝试为项目中的所有 UINavigationBars 添加阴影。我已经尝试了一些在这个网站和其他互联网教程上推荐的东西,但是没有运气让阴影粘住。我尝试使用我在 Photoshop 中创建的阴影图像将其放入,并在主 appDelegate 中调用以下内容:

[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"shadowTest.png"]];

我已经将 UINavigationBar 子类化,并尝试从方法内部的类中分配属性,但awakeFromNib仍然没有。然后我尝试使用<QuartzCore/QuartzCore.h>图像框架手动创建阴影,但什么也没发生。我正在使用子类来覆盖该drawRect方法,这会导致我的问题吗?这是 UINavigationBar 类,我最近尝试让阴影粘住。

#import "BasicNavigationBar.h"

@implementation BasicNavigationBar

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];

    if (self)
    {
        // Initialization code
    }
    return self;
}

- (void)awakeFromNib
{
    [super awakeFromNib];

    // draw shadow
    self.layer.masksToBounds = NO;
    self.layer.shadowOffset = CGSizeMake(0, 3);
    self.layer.shadowOpacity = 1.0;
    self.layer.shadowColor = [UIColor blackColor].CGColor;
    self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
}

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextFillRect(context, rect);
}

@end
4

1 回答 1

1

setShadowImage如果您不设置 也不起作用backgroundImage

要显示自定义阴影图像,还必须使用 setBackgroundImage:forBarMetrics: 方法设置自定义背景图像。如果使用默认背景图像,则无论此属性的值如何,都将使用默认阴影图像。

于 2013-10-07T21:36:34.550 回答