【问题标题】:objective c - UINavigationBar with rounded corners目标 c - 带圆角的 UINavigationBar
【发布时间】:2012-04-20 16:16:00
【问题描述】:

我想让我的导航栏有圆角(左上角和右上角)

我找到了实现它的代码:

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;

但它有一个问题,现在 nab bar 没有拐角边缘,它在数千个拐角处都是透明的,我可以看到它后面的视图。
我不希望它是透明的,我想在那里放一些黑色。
有人知道怎么做吗?

【问题讨论】:

  • 究竟为什么要使用 OpenGL 作为标签?

标签: objective-c uinavigationcontroller uinavigationbar cglayer


【解决方案1】:

假设这是一个顶级导航控制器,这样的东西应该适合你:

self.window.backgroundColor = [UIColor blackColor];

把它贴在你的application:didFinishLaunchingWithOptions:

如果做不到这一点,只需使用带有黑角的导航栏图像:

【讨论】:

  • 谢谢,但这对我来说不是一个好的解决方案,很多时候我在导航栏后面有不同的看法。
  • > 做不到这一点,只需使用带有黑角的导航栏图像 - 是的,我认为这是一个更好的解决方案 :) 在 Photoshop 中也很容易做到,并且比在屏幕上绘制圆角更有效。
  • 顺便说一句,这是一个很棒的导航栏图像,我可以在我的应用程序中使用它吗?
  • 谢谢 :) 不要粗鲁,但你是否有 psd 文件(假设它是用 Photoshop 完成的)?
  • 抱歉 - a) 我是在 Pixelmator 中制作的,b) 我只有 png
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 2021-10-22
  • 2013-10-07
  • 2016-07-12
  • 2011-04-05
相关资源
最近更新 更多