Как использовать изображение в качестве фона для текстового поля в Cocoa?

StackOverflow https://stackoverflow.com/questions/765104

  •  12-09-2019
  •  | 
  •  

Вопрос

Можно ли использовать изображение в качестве фона для текстового поля в Какао?Если да, то как?

Это было полезно?

Решение

Я не знаю, является ли это «правильным» способом, но первое, что приходит на ум, — это создать собственный подкласс 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 ключевые слова.

Я также хотел бы упомянуть две вещи.Во-первых, я бы порекомендовал взять копию Программирование какао для Mac OS X, автор Аарон Хиллегасс — он охватывает большую часть основ какао, которые я только что рассмотрел, и является одним из лучших способов изучить какао в целом.Во-вторых, хотя мой подход и работает, возможно, это не лучший подход, тем более что я совсем недавно обнаружил эта почта, что, кажется, намекает на лучший способ расширения NSTextField.

Другие советы

Вместо создания подкласса NSTextField просто сделайте цвет фона прозрачным [NSColor ClearColor] и поместите за ним изображение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top