5

我想讓我的導航欄一帶有圓角(前左和右)目標C - UINavigationBar的圓角

我發現這個代碼,使之成爲現實:

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; 

但它有一個問題,現在觸摸板沒有邊角,它在各個角落都是透明的,我可以看到背後的視圖。
我不希望它是透明的我想在那裏放一些黑色。
任何人都知道如何做到這一點?

+0

到底爲什麼你有OpenGL作爲標籤? – 2012-04-20 16:36:43

回答

5

假設這是一個頂級導航控制器,這樣的事情應該爲你工作:

self.window.backgroundColor = [UIColor blackColor]; 

只要堅持,在你的application:didFinishLaunchingWithOptions:

做不到這一點,只是用加黑角的導航欄圖像:

enter image description here

+0

謝謝,但對我來說這不是一個好的解決方案,很多時候我在導航欄背後有不同的看法。 – Eyal 2012-04-20 17:08:10

+0

>如果不這樣做,只需使用帶黑角的導航欄圖像 - 是的,我認爲這是一個更好的解決方案:)在photoshop中也很容易,而且比在屏幕上繪製圓角更有效。 – Eyal 2012-04-26 08:35:23

+0

順便說一句,這是一個偉大的導航欄圖像,我可以在我的應用程序中使用它? – Eyal 2012-05-15 09:23:37