Используйте BWToolkit через код вместо IB - PullRequest
6 голосов
/ 10 марта 2011

Я пытаюсь использовать BWToolkit для создания кнопки в стиле HUD. Поскольку Xcode 4 не поддерживает плагины IB, я вынужден сделать эту кнопку с помощью кода. После импорта фреймворка и импорта заголовка я попробовал это:

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

Я бы ожидал эту красивую кнопку:

button

Тем не менее, это то, что я получаю (минус черная граница):

button

Есть идеи, что я здесь не так делаю?

Ответы [ 2 ]

7 голосов
/ 15 марта 2011

Вам нужно создать правильную ячейку для вашей кнопки.Нечто подобное приблизит вас:

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];
2 голосов
/ 13 мая 2011

Вы также можете использовать обычные кнопки в Интерфейсном Разработчике и изменять их классы. Класс кнопки должен быть установлен на 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...