Cocoa のテキスト フィールドの背景として画像を使用することは可能ですか? もしそうなら、どのように?
2 に答える
これが「正しい」方法であるかどうかはわかりませんが、最初に頭に浮かぶのは、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
キーワードの間に追加することをお勧めします。
また、2つのことについて言及したいと思います。まず、Aaron Hillegass によるCocoa Programming for Mac OS Xのコピーを入手することをお勧めします。これは、今説明した Cocoa の基本のほとんどをカバーしており、Cocoa 全般を学習するための最良の方法の 1 つです。第二に、私のアプローチは機能しますが、おそらく最善のアプローチではありません。特に、この投稿を最近見つけたばかりなので、NSTextField を拡張するより良い方法を示唆しているようです。
NSTextField をサブクラス化する代わりに、背景色を透過 [NSColor clearColor] にして、その背後に画像を置きます。