Eya*_*yal 5 objective-c uinavigationbar uinavigationcontroller cglayer
我想让我的导航栏成为带圆角的导航栏(左上角和右上角)
我发现这个代码可以实现:
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)
但是它有一个问题,现在nab条没有角边,它在角落里是透明的,我可以看到它后面的视图.
我不希望它透明,我想在那里放一些黑色.
有谁知道怎么做?
假设这是一个顶级导航控制器,这样的东西应该适合你:
self.window.backgroundColor = [UIColor blackColor];
Run Code Online (Sandbox Code Playgroud)
把它坚持在你的 application:didFinishLaunchingWithOptions:
如果不这样做,只需使用带黑角的导航栏图像:

| 归档时间: |
|
| 查看次数: |
2675 次 |
| 最近记录: |