问题覆盖 UIButton 的默认构造函数 Class?
Issue overriding the default constructor of the UIButton Class?
当对象被放置在视图控制器上时,它被初始化。我想知道您是否可以将 UIButton 放置在 Storyboard 上,自定义 class 是 UIButton class 的子 class,并使用自定义自动初始化属性和 运行 一些自定义方法 - 如自定义 class 中所定义 - 而不是必须在视图控制器的 class.
中键入修改属性的方法
实际上,我试图通过让自定义按钮像任何普通 UIButton 一样自动构造自身来在我的视图控制器的 class 中保存 space,但自定义属性和方法也是运行.
我不确定如何解决我的问题,我基本上想在重写的构造函数中使用 setupButton 方法 运行。
@implementation TransitionButton
@synthesize borderRadius, borderWidth, borderColor, highlightColor;
- (void)setupButton
{
borderRadius = 5;
borderWidth = 2;
borderColor = [TransitionButton customRedColor];
highlightColor = [UIColor redColor];
[self addBorder];
[self setupEventEffects];
}
- (void)setupEventEffects
{
[self addTarget:self action:@selector(highlight) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(unhighlight) forControlEvents:UIControlEventTouchUpInside];
[self addTarget:self action:@selector(unhighlight) forControlEvents:UIControlEventTouchDragExit];
}
- (void)addBorder
{
self.layer.borderColor = borderColor.CGColor;
self.layer.cornerRadius = borderRadius;
self.layer.borderWidth = borderWidth;
}
- (void)highlight
{
self.layer.borderColor = highlightColor.CGColor;
self.titleLabel.textColor = highlightColor;
}
- (void)unhighlight
{
self.layer.borderColor = borderColor.CGColor;
self.titleLabel.textColor = borderColor;
}
故事板不使用 init
初始化它们的对象。它们使用 initWithCoder:
进行初始化,因此如果您想从 Storyboard 进行自定义,那么这就是您需要实现的内容。
大致如下:
- (instancetype) initWithCoder: (NSCoder *)coder {
self = [super initWithCoder: coder];
[self setupButton];
return self;
}
当对象被放置在视图控制器上时,它被初始化。我想知道您是否可以将 UIButton 放置在 Storyboard 上,自定义 class 是 UIButton class 的子 class,并使用自定义自动初始化属性和 运行 一些自定义方法 - 如自定义 class 中所定义 - 而不是必须在视图控制器的 class.
中键入修改属性的方法实际上,我试图通过让自定义按钮像任何普通 UIButton 一样自动构造自身来在我的视图控制器的 class 中保存 space,但自定义属性和方法也是运行.
我不确定如何解决我的问题,我基本上想在重写的构造函数中使用 setupButton 方法 运行。
@implementation TransitionButton
@synthesize borderRadius, borderWidth, borderColor, highlightColor;
- (void)setupButton
{
borderRadius = 5;
borderWidth = 2;
borderColor = [TransitionButton customRedColor];
highlightColor = [UIColor redColor];
[self addBorder];
[self setupEventEffects];
}
- (void)setupEventEffects
{
[self addTarget:self action:@selector(highlight) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(unhighlight) forControlEvents:UIControlEventTouchUpInside];
[self addTarget:self action:@selector(unhighlight) forControlEvents:UIControlEventTouchDragExit];
}
- (void)addBorder
{
self.layer.borderColor = borderColor.CGColor;
self.layer.cornerRadius = borderRadius;
self.layer.borderWidth = borderWidth;
}
- (void)highlight
{
self.layer.borderColor = highlightColor.CGColor;
self.titleLabel.textColor = highlightColor;
}
- (void)unhighlight
{
self.layer.borderColor = borderColor.CGColor;
self.titleLabel.textColor = borderColor;
}
故事板不使用 init
初始化它们的对象。它们使用 initWithCoder:
进行初始化,因此如果您想从 Storyboard 进行自定义,那么这就是您需要实现的内容。
大致如下:
- (instancetype) initWithCoder: (NSCoder *)coder {
self = [super initWithCoder: coder];
[self setupButton];
return self;
}