Я расширяю класс 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
Это нормально, но, конечно, не очень гибко.
Как включить использование перечисления typedef (как это делает Apple) для всех различных
цвета, шрифты и размеры, которые я бы хотел, чтобы моя пользовательская кнопка соответствовала.
Единственное, что я могу получить из файлов интерфейса из UIKit, это то, что это делается так:
typedef enum {
RGCustomNavBarButtonStyleBlue,
RGCustomNavBarButtonStyleGrey,
RGCustomNavBarButtonStyleBlack,
RGCustomNavBarButtonStyleGreen,
RGCustomNavBarButtonStyleRed,
} RGCustomNavBarButtonStyle;
Как получить из этого и в работающую реализацию, которая принимает шрифт, размер, цвет и т. Д. Из значений перечисления через конструктор (initWithStyle)?
Можно ли перегружать конструкторы в Objective C? несколько конструкторов?
Надеюсь, что это имеет смысл, и спасибо за любую помощь, оказанную:)