どのようにあなたはココアでテキストフィールドの背景として画像を使用することはできますか?

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)実装ファイルの本体にそれを追加したいと思う。

また、私は二つのことを言及したいと思います。まず、私はアーロン・ヒレガス-それは私がちょうど渡ったココアの基礎のほとんどをカバーし、への最善の方法の一つであることで、マックOS X のためののココアプログラミングのコピーを拾ってお勧めします一般的にココアを学びます。私のアプローチの作品が第二に、それはおそらくない最高の私は最近見つかったアプローチ、特に以来 NSTextFieldを拡張するより良い方法を示唆しているようだに、。

他のヒント

代わりにNSTextFieldをサブクラス化するだけ背景色透明[NSColor clearColor]を作成し、その背後に画像を入れます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top