使用图像作为NSTextField的背景

时间:2012-05-16 07:27:39

标签: objective-c cocoa

有没有办法使用jpeg / png图像作为NSTextField的背景?

1 个答案:

答案 0 :(得分:9)

1解决方案:您可以这样做:

NSImage *image = ...; //image for background
[_textfieldOutlet setBackgroundColor:[NSColor colorWithPatternImage:image]];

结果:

NSTextField with background


2解决方案:您可以像这样继承NSTextField

#import "TextFieldSubclass.h"

@implementation TextFieldSubclass

- (void)awakeFromNib
{
    [self setDrawsBackground:NO];
}

- (void)drawRect:(NSRect)rect
{
    [super drawRect:rect];

    NSImage *image = ...; //image for background
    [image setFlipped:YES]; //image need to be flipped

    //use this if You need borders

    NSRect rectForBorders = NSMakeRect(2, 2, rect.size.width-4, rect.size.height-4);
    [image drawInRect:rectForBorders fromRect:rectForBorders operation:NSCompositeSourceOver fraction:1.0];

    //if You don't need borders use this:

    //[image drawInRect:rect fromRect:rect operation:NSCompositeSourceOver fraction:1.0];
}

@end

带边框的结果:

with border

没有边框的结果:

without border