4

私はアプリケーションを iOS7 互換にする作業を行っていますが、UINavigationBar で私を夢中にさせる問題に遭遇しています。

ぼかしや backgroundPicture を使用せずに、navigationBar を完全に透明にしたいが、navigationItem ボタンを含めて表示したい。

iOS6 では、次のように作成していました。

UIImage *maskedImage = [UIImage imageNamed:@"transparent_image.png"]
[navigationBar setBackgroundImage:maskedImage forBarMetrics:UIBarMetricsDefault];

しかし、iOS7ではもう機能しません。

助言がありますか ?

4

2 に答える 2

2

おそらくこれはあなたの質問に答えますか?ビュー コントローラーを選択し、[トップ バーの下のエッジを拡張する] の横にあるボックスのチェックを外すと、背景画像がその下でにじむことはありません。

于 2013-09-19T23:31:33.180 に答える
0
@implementation MyCustomNavigationBar

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self setup];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self setup];
    }
    return self;
}

- (void)setup {
    [self setupBackground];
}

- (void)setupBackground {
    self.backgroundColor = [UIColor clearColor];
    self.tintColor = [UIColor clearColor];

    // make navigation bar overlap the content
    self.translucent = YES; 
    self.opaque = NO;

    // remove the default background image by replacing it with a clear image
    [self setBackgroundImage:[self.class maskedImage] forBarMetrics:UIBarMetricsDefault];

    // remove defualt bottom shadow
    [self setShadowImage: [UIImage new]]; 
}

+ (UIImage *)maskedImage {
    const float colorMask[6] = {222, 255, 222, 255, 222, 255};
    UIImage *img = [UIImage imageNamed:@"nav-white-pixel-bg.jpg"];
    return [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];
}

@end
于 2013-10-08T09:18:48.680 に答える