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