2010-07-09 6 views
9

Я динамически добавляю NSTextField в окно, и у меня возникают проблемы с рендерингом. Я устанавливаю цвет фона черным, а цвет текста - белым. Они работают, но их представляет собой прямоугольник, который является частью текста, который всегда белый. Кто-нибудь знает, что я могу делать неправильно? Как я могу избавиться от белого фона, который находится вокруг текста? Код выглядит следующим образом:NSTextField Проблемы с цветом

//Create rectangle to size text field 

NSRect textFieldRect = NSMakeRect(300, 300, 300, 54); 

//Instantiate text field and set defaults 
NSTextField* textField = [[NSTextField alloc] initWithFrame:textFieldRect]; 

[textField setFont:[NSFont fontWithName:@"Arial" size:48]]; 

[textField setTextColor:[NSColor whiteColor]]; 

[textField setStringValue:@"Some Text"]; 

[textField setBackgroundColor:[NSColor blackColor]]; 

[textField setDrawsBackground:YES]; 

[textField setBordered:NO]; 

[[window contentView] addSubview:textField]; 

ответ

11

Я пробовал свой код на Mac OS X 10.6.4.

Внутри делегата приложения:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    NSRect textFieldRect = NSMakeRect(300, 300, 300, 54); 
    NSTextField* textField = [[NSTextField alloc] initWithFrame:textFieldRect]; 
    [textField setFont:[NSFont fontWithName:@"Arial" size:48]]; 
    [textField setTextColor:[NSColor whiteColor]]; 
    [textField setStringValue:@"Some Text"]; 
    [textField setBackgroundColor:[NSColor blackColor]]; 
    [textField setDrawsBackground:YES]; 
    [textField setBordered:NO]; 
    [[window contentView] addSubview:textField]; 
} 

И это результат

alt text http://www.freeimagehosting.net/uploads/26c04b6b64.png

Я не могу видеть белую коробку.
Возможно, вы используете другую ОС.
Или, может быть, у вас есть другие взгляды друг на друга, которые вызывают странный эффект, о котором вы говорите.

+0

Спасибо за быстрый ответ Florin, может быть, что-то важное, я добавляю NSTextField к динамически созданному NSWindow с черным фоном. Не уверен, что это имеет значение, но оно должно учитывать, что у вас, похоже, нет той же проблемы. –

+0

ссылка не работает. Почему вы не загрузили его в SO? – SpaceDog

0

ОК,

Тайна частично решена. В сочетании с моим NSTextField я также устанавливаю некоторые NSApplicationPresentationOptions, чтобы поместить приложение в режим киоска. Похоже, что что-то с этим вызывает проблему, которую я вижу. Если я не установлю PresentationOptions, то NSTextField будет отображаться точно так, как я хочу. Я выслежу, какой конкретный PresentationOption виноват и опубликует здесь.

+0

Похоже, что это связано с [NSApp setPresentationOptions:] виноват. Даже если я назову его настройкой по умолчанию, это заставит текст иметь белый фон. Хмм ..... –

2

Попробуйте установить свойство refusesFirstResponder = TRUE вашего объекта NSTextField. Я столкнулся с поведением, которое вы описали в 10.7, в 10.6 все работает так, как ожидалось.

+0

не имеет для меня никакого значения в Сьерра – SpaceDog

Смежные вопросы