問題が解決されている可能性が高いことはわかっていますが、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