UINavigationBarの右上と左上を丸くしたい。UINavigationBar丸みを帯びた2つのコーナー
私はビューコーナーの半径を変更する機能があることを知っていますが、標準のUINavigationBarに似た何かをすることは可能ですか?あなたは私が話しているのか分からない場合は
、これをチェックアウト:
感謝を!
UINavigationBarの右上と左上を丸くしたい。UINavigationBar丸みを帯びた2つのコーナー
私はビューコーナーの半径を変更する機能があることを知っていますが、標準のUINavigationBarに似た何かをすることは可能ですか?あなたは私が話しているのか分からない場合は
、これをチェックアウト:
感謝を!
UINavigationBarでdrawRectをオーバーライドし、カスタムイメージを使用することをお勧めします。
-drawRect:iOS 5で呼び出されない - http://stackoverflow.com/questions/5575821/custom-nav-bar-styling-ios/6389991#6389991 –
これを更新していただきありがとうございます。私は今日誰もがUIAppearanceプロトコルを知らされることを願っています。 –
この情報が役立つ場合があります。 CoreAnim/Imageで何らかのマスキングを行うこともできますか?私は(iOS5を上でテスト)次のコードは、私の作品...
http://foobarpig.com/iphone/uinavigationbar-with-solid-color-or-image-background.html
コア*家族について非常に精通していませんよ。 次のコードは、メインナビゲーションバーの左上/右隅を丸めます。さらに、影を追加します。
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;
@Jozeそれは魅力のように動作しますが、私のUIButtonのバックが機能しなくなります...なぜですか? –
こんにちはJuan。 button.frame.origin.yがマスクされている可能性があります。 y座標(おそらく+2ピクセル)を変更して試してみてください。多分それは問題です – Joze
素晴らしい答え!これにより、ナビゲーションバーが大きく見えるようになります。私が他の人のために遭遇した簡単な問題:Mach-Oリンカーエラーが発生した場合、プロジェクト設定でquartzcoreライブラリをリンクする必要があります。再びありがとう@ジョーズ! – jonstaff
ビューコーナーのラジウスを変更することはできますが、すべてのコーナーに影響します。 –