5

とUINavigationBar私は私のナビゲーションバー角丸1(左上と右)を作りたいObjective Cの角の丸い

私はそれを実現する、このコードが見つかりました:

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つの問題があります。今度はナーブバーがコーナーエッジを持たないので、それはthousコーナーで透明であり、その背後のビューを見ることができます。
私はそれが透明になりたくありません私はそこにいくつかの黒の色を入れたいです。
誰でも方法を知っていますか?

+0

なぜ正確にOpenGLをタグとして使用していますか? –

答えて

5

このような何かがあなたのために働く必要があり、これはトップレベルのナビゲーションコントローラであると仮定すると:

self.window.backgroundColor = [UIColor blackColor]; 

はちょうどあなたのapplication:didFinishLaunchingWithOptions:

にちょうど黒のコーナーでナビゲーションバーの画像を使用し、それに失敗することを堅持:

enter image description here

+0

ありがとうございますが、これは私にとっては良い解決策ではありません。 – Eyal

+0

>これに失敗した場合は、黒いコーナーのナビゲーションバー画像を使用してください - これはもっと良い解決策だと思います:)また、Photoshopで非常に簡単で、画面上に丸い角を描くより効率的です。 – Eyal

+0

これは私がアプリで使うことができる素晴らしいナビゲーションバー画像です – Eyal