どのようにあなたはココアでテキストフィールドの背景として画像を使用することはできますか?
-
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の編集を設定しているかにもよるがプロジェクトウィンドウ(プロジェクトウィンドウの中央にあるファイルのメインリストの中にあるどこからそれをドラッグしたいです環境、これはあなたのために異なる場合があります)。 は、コードの残りの部分については、あなたが特に また、私は二つのことを言及したいと思います。まず、私はアーロン・ヒレガス-それは私がちょうど渡ったココアの基礎のほとんどをカバーし、への最善の方法の一つであることで、マックOS X NSTextField
をサブクラス化するためには、新しいObjective-Cのクラスファイル(ファイル - >新規ファイルを...)を作成したいと思うが、クラスがNSTextField
代わりのNSObject
から継承するようヘッダを編集します。言い換えれば、あなたのヘッダファイルには、次のようになります。#import <Cocoa/Cocoa.h>
@interface BGImageTextField : NSTextField
{
}
@end
BGImageTextField.m
と@implementation
キーワードの間に、(例えば、@end
)実装ファイルの本体にそれを追加したいと思う。
他のヒント
代わりにNSTextFieldをサブクラス化するだけ背景色透明[NSColor clearColor]を作成し、その背後に画像を入れます。