我看到这个答案UINavigationBar的两个圆角
https://stackoverflow.com/a/9243472/563381
虽然它一旦运作良好的视觉为您设定导航栏的层上的面具就不再响应触摸...所以在条上出现的后退按钮不能被点击。任何引起触动的解决方案都要通过CALAyer?我不认为CALayer的屏蔽触摸或者屏蔽会阻挡触摸。
我看到这个答案UINavigationBar的两个圆角
https://stackoverflow.com/a/9243472/563381
虽然它一旦运作良好的视觉为您设定导航栏的层上的面具就不再响应触摸...所以在条上出现的后退按钮不能被点击。任何引起触动的解决方案都要通过CALAyer?我不认为CALayer的屏蔽触摸或者屏蔽会阻挡触摸。
好了,我真的不知道为什么CALayer的块接触,这听起来很奇怪,我...
我圆UINavigationBar的角落在于把2的UIImageView(10×10像素),在弯道和添加的方式2图像给他们。这些图像可以用作蒙版,而不会阻挡触摸。如果您使用抗锯齿技术来绘制图像,则外观非常完美。
你应该尝试使用此代码:
self.navigationController.navigationBar.translucent = YES;
这港岛线打开你的背部button.You可以看到您的按钮,但其在另一层。这就是为什么它不会工作的触摸..
UPDATE:
使用此行代码测试。这会像你的魅力一样工作。
//Style UINavigationBar
UIView *background = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
background.backgroundColor = [UIColor blackColor];
[self.view addSubview:background];
self.navigationController.navigationBar.tintColor = [UIColor cyanColor];
self.navigationController.navigationBar.translucent = YES;
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;
//Back Btn
UIButton *btnback = [UIButton buttonWithType:UIButtonTypeCustom];
[btnback setFrame:CGRectMake(0, 0, 54, 29)];
[btnback setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
UILabel * btnlabel = [[UILabel alloc]initWithFrame:CGRectMake(15, 0, 40, 23)];
btnlabel.backgroundColor = [UIColor clearColor];
btnlabel.textColor = [UIColor whiteColor];
btnlabel.font = [UIFont boldSystemFontOfSize:13];
btnlabel.text = @"back";
[btnback addSubview:btnlabel];
[btnback addTarget:self action:@selector(backHome:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:btnback];
我觉得很奇怪,设置图层蒙版也会对接触产生任何影响。你是否在作为自定义导航栏的drawrect中执行此操作?或者你只是将它们作为子视图添加到导航栏? – 2012-04-05 17:27:50
这两个UIImageView位于我的NIB文件的顶部(正面)。所以他们没有连接到我的UINavigationBar,但“高于”它。 – Beppe 2012-04-05 17:46:39
我将它们添加为子视图,它工作正常。只有问题是它与两个PNG的混乱,必须完全匹配导航栏的颜色,这是困难的。给你一个投票,但它不是我正在寻找的答案。 我真的想弄清楚为什么面具不能正常工作。为了让事情变得陌生,我刚开始了一个全新的项目,并使用了相同的掩码,并且没有阻挡触摸......我的主项目中没有任何其他navbar变更,掩码是第一个也是唯一的... – 2012-04-05 17:50:56