UIButton クラスを拡張して、UINavigationBarButton のフォントと色を設定できるようにします (このコード例から: コードをオンに切り替えます) 。
私はこのように行きます:
@interface NavBarButtonGrey : UIButton
-(id)init;
@end
@implementation NavBarButtonGrey
-(id)init {
if(self = [super init]) {
self.frame = CGRectMake(0, 0, 49.0, 30.0);
self.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
UIImage *image = [UIImage imageNamed:@"greyNavButton.png"];
UIImage *stretchImage =
[image stretchableImageWithLeftCapWidth:15.0 topCapHeight:0.0];
[self setBackgroundImage:stretchImage forState:UIControlStateNormal];
self.backgroundColor = [UIColor clearColor];
[self setTitleShadowColor:[UIColor blackColor] forState:UIControlStateNormal];
self.titleShadowOffset = CGSizeMake(0, -1);
self.titleLabel.font = [UIFont boldSystemFontOfSize:13];
}
return self;
}
@end
これは問題ありませんが、もちろんあまり柔軟ではありません。カスタムボタンを準拠させたいすべての異なる色、フォント、およびサイズに対して、(Apple のように) typedef 列挙型を使用して組み込む方法を教えてください。
UIKit からインターフェイス ファイルを取得できる唯一のことは、次のように行われることです。
typedef enum {
RGCustomNavBarButtonStyleBlue,
RGCustomNavBarButtonStyleGrey,
RGCustomNavBarButtonStyleBlack,
RGCustomNavBarButtonStyleGreen,
RGCustomNavBarButtonStyleRed,
} RGCustomNavBarButtonStyle;
そこから、コンストラクター(initWithStyle)を介して列挙型の値からフォント、サイズ、色などを取得する実用的な実装に入るにはどうすればよいですか?
Objective Cでコンストラクターをオーバーロードしますか? 複数のコンストラクタ?
それが理にかなっていることを願っています。与えられた助けに感謝します:)