问题覆盖 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;
}