通过代码而不是IB使用BWToolkit

时间:2011-03-10 01:38:32

标签: objective-c cocoa xcode macos xcode4

我正在尝试使用BWToolkit制作HUD风格的按钮。由于Xcode 4不支持IB插件,我不得不通过代码创建此按钮。导入框架并导入标题后,我尝试了这个:

BWTransparentCheckbox *button = [[BWTransparentCheckbox alloc] initWithFrame:NSMakeRect(0, 0, 100, 20)];
[self addSubview:button]; 

我希望这个漂亮的按钮:

button

然而,这是我得到的(减去黑色边框):

button

知道我在这里做错了吗?

2 个答案:

答案 0 :(得分:7)

您必须为按钮创建正确的单元格。这样的事情会让你更接近:

BWTransparentButton *button = [[BWTransparentButton alloc] initWithFrame:NSMakeRect(0, 0, 136, 28)];
BWTransparentButtonCell *buttonCell = [[BWTransparentButtonCell alloc] init];
[button setCell:buttonCell];
[buttonCell setBezelStyle:NSRoundedBezelStyle];
[buttonCell release];
[self addSubview:button];
[button release];

答案 1 :(得分:2)

您还可以在Interface Builder中使用常规按钮并更改其类。按钮类应设置为BWTransparentButton,单元类应设置为BWTransparentButtonCell

然后还有一个问题,生成的HUD样式按钮太低了。您不能从IB更改按钮高度,但您可以创建自定义BWTransparentButton子类并在那里设置所需的高度:

- (void) awakeFromNib
{
    [super awakeFromNib];
    NSRect frame = [self frame];
    frame.origin.y -= 9;
    frame.size.height += 9;
    self.frame = frame;
}

这是一个愚蠢的解决方案,但对我来说它仍然在代码中创建按钮。我所以希望Apple在标准库中包含HUD风格的控件,或者至少让Interface Builder插件工作了......