2013-03-14 4 views
5

思っ、私はUIBarButtonItemsに次のようiOSでUIBarButtonItemイメージのグラデーションを設定するにはどうすればいいですか?

+ (UIBarButtonItem *)createBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a 
{ 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    UIImage *buttonImage = [[UIImage imageNamed:@"blabla.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]; 


    CGRect buttonFrame = [button frame]; 
    buttonFrame.size.width = 35; 
    buttonFrame.size.height = buttonImage.size.height; 
    [button setFrame:buttonFrame]; 

    [button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 

    [button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside]; 

    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

    return buttonItem ; 
} 

をカスタマイズした。しかし、今、私はボタンの背景画像上のシェーディング/光沢効果を持っていない....

がへの道がありますがそれは自動的に行われたのですか、それともプログラム的に行う必要がありますか?

EDIT: Here is a capture, I used a simple green square to make it more obvious. There's no more shading/glossy effect

+0

標準の 'UIBarButtonItem'のスクリーンショットを共有してください。ここでは画像だけではできません。 –

+0

ok、イメージに示されているように、それ以上のシェーディング/光沢。おそらく通常の動作で、iOSに自動的にそれをさせることができるかどうか疑問に思っています... – Alex

+0

標準のボタンは同じ高さですが、光沢効果がどのように見えるかをメモします。 )。この場合、画像に光沢効果を追加し、画質を損なわずに拡大することができます(枠線とコーナー領域をカバーするためのインセットを与える)。速く動作して、すばらしくて、私はそれを使う特別なコードを使用する必要はなく、さらには特別なコードを作る必要もありません。 –

答えて

0

完全にあなたが「blabla.png」でフラット緑の画像以外のものを提供する必要があると思い、このような方法で、バーのボタンをカスタマイズするには。

これを処理する別の方法は、画像にボーダースタイルのボタンを作成することです。以下のような何か:

UIBarButtonItem* barButton = [UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"blabla.png"] style:UIBarButtonItemStyleBordered target:tgt selector:a]; 

UIBarButtonItemStyleBorderedスタイルは3Dボタン-yの外観を上げ、それを提供します。必要に応じて、あなたのバーに合うようにその外観を薄くすることができます。

+0

チップをありがとう。残念ながら、UIBarButtonではなくButtonをインスタンス化するので、これは厄介な警告を生成します。 – Alex

+0

私は何かが足りないと思う。あなたのUIButtonは単なる緑のイメージです。それからUIBarButtonItemを作成しているようです。 UIButtonをスキップして、UIBarButtonItemを操作してください。 –

+0

私はUIButtonを使ってこのカスタムUIViewでUIBarButtonを初期化します。これは、画像の伸縮、テキストの長さの関数としての調整などを行います。そうでなければ、UIBarButtonItemで画像と可変長テキストを同時に割り当てる方法はありません(少なくとも私が知っているものはありません) – Alex

関連する問題