是否有可能使用图像作为用于可可文本字段的背景? 如果是的话,如何?

有帮助吗?

解决方案

我不知道这是“正确”的方式做到这一点,但是,想到的第一件事是使的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