0

我创建了一个继承自UIButton. 如果我将圆角矩形按钮添加到我的 XIB 并将它们的类属性设置为UIButton,它们会显示为圆角矩形按钮(但是我的自定义代码都不会被调用,因此按钮的行为就像普通按钮一样,这不是我想要的)。如果我在 IB 中将这些按钮的类属性设置为我的自定义类UIButtonCustom,它们在 IB 设计器中仍然看起来是圆角矩形按钮,但是当我运行应用程序时,按钮属于自定义类型(这意味着它们在按钮中大部分显示为空白文本,因为我没有为按钮设置任何背景图像)。

当应用程序实际运行时,有什么方法可以让这些按钮看起来像圆角矩形按钮?

4

2 回答 2

1

您在 xib 上看到的圆形按钮是 ie 的子UIButtonUIRoundedRectButton
而且我认为您不能对其进行子类化,因为它没有记录(私有 API)。

于 2013-02-08T16:38:17.813 回答
1

正如其他人在这里指出的那样,您不能子类化 UIRoundedRectButton。但是你可以通过在你的 init 方法中设置一些 CALayer 属性来让你的按钮看起来像圆角矩形按钮。

#import "MyCustomButton.h"
#import <QuartzCore/QuartzCore.h>

@implementation MyCustomButton


- (id)initWithFrame:(CGRect)frame
    //button created in code
{
    self = [super initWithFrame:frame];
    if (self) {
        [self initialise];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder;
    //button created in Interface Builder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
            [self initialise];
    }
    return self;
}

- (void)initialise;
{
    self.layer.cornerRadius  = 10.0f;
    self.layer.borderWidth = 1.0f;
    self.layer.borderColor = [[UIColor  lightGrayColor] CGColor];
}

@end

如果您禁用了自动布局,您可以继续在 IB 中使用“圆角矩形”按钮样式,以在布局中为您提供正确的外观,尽管当您的自定义按钮加载时该样式将被忽略。如果启用了自动布局,您必须将 IB 样式更改为“自定义”,否则您会发现按钮框架的行为方式与您期望的不同。

于 2013-02-08T19:06:14.417 回答