Я не знаю, является ли это «правильным» способом сделать это, но первое, что приходит на ум, - это создать собственный подкласс NSTextField, который может выглядеть примерно так:
- (void)awakeFromNib
{
[self setDrawsBackground:NO];
}
- (void)drawRect:(NSRect)rect
{
[super drawRect:rect];
[self lockFocus];
[[NSImage imageNamed:@"<#image filename#>"] drawInRect:rect
fromRect:rect
operation:NSCompositeSourceOver
fraction:1.0];
[self unlockFocus];
}
Опять же, это просто грубая схема основных частей.
В любом случае, как я уже сказал, я не уверен, действительно ли это «правильный» способ сделать это (или, если уж на то пошло, «правильный» способ), но это даст вам фоновое изображение для вашего NSTextField.
Редактировать в ответ на комментарий Джошуа (мне не хватит места в этом маленьком окошке для комментариев):
Чтобы добавить изображение в ваш проект, вы должны перетащить его из любого места в окно проекта (основной список файлов в середине окна проекта, хотя в зависимости от того, как вы настроили редактирование XCode). окружающая среда, это может отличаться для вас).
Чтобы создать подкласс NSTextField
, вам нужно создать новый файл класса Objective C (Файл -> Новый файл ...), но отредактировать заголовок так, чтобы класс наследовал от NSTextField
вместо NSObject
, Другими словами, ваш заголовочный файл может выглядеть так:
#import <Cocoa/Cocoa.h>
@interface BGImageTextField : NSTextField
{
}
@end
Что касается остальной части кода, вы хотели бы добавить это в основную часть файла реализации (например, BGImageTextField.m
), в частности между ключевыми словами @implementation
и @end
.
Я также хотел бы упомянуть две вещи. Во-первых, я бы порекомендовал взять копию Aaron Hillegass Cocoa Programming для Mac OS X - она охватывает большинство основ Cocoa, которые я только что изучил, и является одним из лучших способов изучения Какао в целом. Во-вторых, хотя мой подход работает, это, вероятно, не самый лучший подход, тем более что я недавно нашел этот пост , который, похоже, намекает на лучший способ расширения NSTextField.