UINavigationBar圆了两个角落

Seb*_*eek 12 iphone cocoa-touch objective-c rounded-corners uinavigationbar

我想围绕UINavigationBar的右上角和左上角.

我知道有更改视角半径的功能,但是可以做一些类似于标准UINavigationBar的操作吗?

如果您不知道我在说什么,请查看以下内容:

谢谢!

Joz*_*oze 44

以下代码适用于我(在iOS5上测试).以下代码围绕主导航栏的左上角/右上角.此外,它增加了一个阴影:

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;
Run Code Online (Sandbox Code Playgroud)


Kol*_*kel 10

最好的方法是覆盖UINavigationBar中的drawRect并使用自定义图像.