我看到這個答案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