0

私の iOS 7 アプリでは、UIBarButtonItems のセットを保持する UIToolbar があり、特定の項目の外観をカスタマイズしたいと考えています。

コードを介して UIToolbar を操作せずに、アイテムをストーリーボードにドロップし、そのクラスを指定したいと思います。1 つのオプションは外観を使用することですが、残念ながらすべての UIBarBUttonItem を変更することになります。

一部の古い SO 投稿では、UIBarButtonItem をサブクラス化し、drawRect を使用することを提案しています。これが理想的な解決策ですが、残念ながら、そのようなメソッドはまったく呼び出されないようです。

4

2 に答える 2

1

問題が解決されている可能性が高いことはわかっていますが、Xcode 6 を使用すると、思いどおりに実行できるようになりました。

Xcode 6 では、マクロIB_DESIGNABLEを使用IBInspectableしたり、Interface Builder のインスペクターで変更できる内容をカスタマイズしたりできます。

プロパティのタイプ宣言の前 (.h 内) に定義IBInspectableして、そのプロパティを IB に公開し、設定します。

IB_DESIGNABLEの前に定義すると、そのカスタム プロパティへの変更をIB でライブ@interfaceで確認することもできます。

次の例は、Xcode 6 の IB に住んでいる、やりたいことを提供する必要があります。

MyBarButtonItem.h

#import <UIKit/UIKit.h>

IB_DESIGNABLE @interface MyBarButtonItem : UIBarButtonItem

@property (nonatomic, retain) IBInspectable UIImage *backgroundImage;

@end

MyBarButtonItem.m

#import "MyBarButtonItem.h"

@implementation MyBarButtonItem

-(void)setBackgroundImage:(UIImage *)backgroundImage {
    [self setBackgroundImage:backgroundImage
                    forState:UIControlStateNormal
                  barMetrics:UIBarMetricsDefault];
}

-(UIImage *)backgroundImage {
    return [self backgroundImageForState:UIControlStateNormal
                              barMetrics:UIBarMetricsDefault];
}

@end

上記のコードに関する若干の免責事項: 明らかな理由から、これはハードコードされたバー メトリックとコントロールの状態に対してのみ背景画像を定義します。

より視覚的な例については、Apple の以下のドキュメントを参照してください。

https://developer.apple.com/library/ios/recipes/xcode_help-IB_objects_media/chapters/CreatingaLiveViewofaCustomObject.html#//apple_ref/doc/uid/TP40014224-CH41-SW1

于 2014-10-13T03:20:55.790 に答える
0

あなたが望むのは、[UIImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] を使用して画像を設定することです。これにより、外観プロキシの色合いが発生せず、ボタン画像を制御できます。

残念ながら、これが XIB を介して実行できるとは思えません...しかし、コードを介してボタンにアクセスできる場合は、次のようにします。

[myBarButton setImage:[[UIImage imageNamed:@"yourButtonImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];

ここで、myBarButton は UIBarButtonItem であり、yourButtonImage.png はバー ボタンの画像です。この画像は着色されていないように見えます。

于 2013-10-21T16:48:58.333 に答える