5

ナビゲーション バーの角を丸くしたい (左上と右上)

それを実現するこのコードを見つけました:

CALayer *capa = [self.navigationController navigationBar].layer;
[capa setShadowColor: [[UIColor blackColor] CGColor]];
[capa setShadowOpacity:0.85f];
[capa setShadowOffset: CGSizeMake(0.0f, 1.5f)];
[capa setShadowRadius:2.0f];  
[capa setShouldRasterize:YES];


//Round
CGRect bounds = capa.bounds;
bounds.size.height += 10.0f;    //I'm reserving enough room for the shadow
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds 
                                               byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)
                                                     cornerRadii:CGSizeMake(10.0, 10.0)];

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = bounds;
maskLayer.path = maskPath.CGPath;

[capa addSublayer:maskLayer];
capa.mask = maskLayer;

しかし、1 つ問題があります。ナブ バーにコーナー エッジがなくなったため、何千ものコーナーが透明になり、その背後のビューを見ることができます。
透明にしたくないので、そこに黒い色を入れたいです。
誰もそれを行う方法を知っていますか?

4

1 に答える 1

5

これが最上位のナビゲーション コントローラーであると仮定すると、次のようなものが機能するはずです。

self.window.backgroundColor = [UIColor blackColor];

それをあなたの中に貼り付けるだけですapplication:didFinishLaunchingWithOptions:

それができない場合は、角が黒いナビゲーション バーの画像を使用します。

ここに画像の説明を入力

于 2012-04-20T16:26:05.543 に答える