0

少しジレンマがあります。それは大したことではありませんが、もしあればまともな答えに興味があります。

私は(バーボタンアイテムとして)のUIButton内部にカスタムサブビューを備えたを使用しています。私のカスタムサブビューは、私がしていることをしている理由でもありません。これは私のナビゲーションバーのアイテムであり、ナビゲーションバーにはセットがあります。の丸みを帯びた長方形の外観にしたいのですが、これは、親バーのを引き継ぐ必要があることを意味します。UIBarButtonItemcustomViewUILabelUIImageUIBarButtonItemtintColorUIButtonUIBarButtonItemStyleBorderedtintColor

現在のソリューションではpng、UIKitforUINavigationBarDefaultButton.pngおよびファミリからファイルを抽出するように実装されています。プロパティを設定してなければ、これは見栄えがします。tintColor代わりに、ボタンは「iOSネイビーブルー」のままです。たとえば、明るいオレンジ(使用している色ではありませんが、ドリフトが発生します)が必要な場合に使用します。それは私のジレンマに私をもたらします:UIButtonをそのスタイルのように見せて動作させるための最良の方法UIBarButtonItemですか?そのプロパティを自分でボタンに設定できます。それは大したことありません。tintColor

UIButtonCoreGraphicsでその背景を描きたいですか?これをすでに実装しているフレームワーク/ライブラリはありますか?不可能を夢見ているなら、教えてください。私はまだCoreGraphicsを手作業で行うのはそれほど素晴らしいことではありませんが、それは間違いなく可能性の範囲外ではありません。

これができない場合は、私がUIView試しているクールなカスタムをいつでも取り入れて、画像として保存する(したがって、UIImageの内部で使用するUIBarButtonItem)ことができることを知っていますが、これができるかどうかを確認したいと思います可能です。

これが私が扱っていることです(以下)。戻るボタンは素晴らしく見えますが、それは私がそれをいじっていないからです。rightBarButtonItem設定したものを使用したいのですが、セットtintColorでそのUIBarButtonItemStyleBordered外観を出すcustomViewために、ボタンのpng背景にファイルを使用させる必要があります。以下は、 (を使用しているため)をtintColor設定した場合でも表示される内容です。UIBarButtonItempng

uinavigationbar

4

2 に答える 2

1

私はStackOverflowでこの質問/回答を見つけました。これにより、残りの部分を翼にすることができるほど近くになります。UIImageこれは、UIColor;で色を付ける方法についての詳細な投稿です。私はそれを関数に引き出し、その要点をここに投稿しました。

それと組み合わせて、UIButtonその背景画像でボタンを作成し、色を付けて、それを空のに配置できるカテゴリメソッドを定義しましたUIBarButtonItem

+ (id)buttonWithBarStyleAndTintColor:(UIColor *)tintColor customView:(UIView *)customView {
    UIImage *defaultNormal = [UIImage imageNamed:@"UINavigationBarDefaultButton.png"];
    UIImage *defaultPressed = [UIImage imageNamed:@"UINavigationBarDefaultButtonPressed.png"];
    UIImage *back = [TintImageWithTintColor(defaultNormal, tintColor)
                     stretchableImageWithLeftCapWidth:5.0
                     topCapHeight:0.0];
    UIImage *pressed = [TintImageWithTintColor(defaultPressed, tintColor)
                        stretchableImageWithLeftCapWidth:5.0
                        topCapHeight:0.0];

    UIButton *button = [self buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0, 0, 34.0f, 30.0f);
    [button addSubview:customView];
    customView.userInteractionEnabled = NO;
    customView.frame = CGRectCenterRectInRect(customView.frame, button.frame);
    [button setBackgroundImage:back forState:UIControlStateNormal];
    [button setBackgroundImage:pressed forState:UIControlStateSelected];
    [button setBackgroundImage:pressed forState:UIControlStateHighlighted];
    return button;
}
于 2012-12-16T22:30:19.987 に答える
0

UIButtonタイプをカスタムに設定して、その色がクリアであることを確認できます。これは、カスタムビューと同じです。そうすると、表示されるビューはUIBarButtonItemの色合いのみになります。

また、投資する意思がある場合は、CoreGraphicsのコードを実行するPaintCodeと呼ばれるこのツールがあります。

于 2012-12-15T04:21:59.263 に答える