是否可以使用图像作为 Cocoa 中文本字段的背景? 如果是这样,怎么办?
最佳答案
我不知道这是否是“正确”的方法,但首先想到的是创建 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 类文件(文件 -> 新文件...),但编辑 header 以便该类继承自 NSTextField
而不是 NSObject
。换句话说,您的头文件可能如下所示:
#import <Cocoa/Cocoa.h>
@interface BGImageTextField : NSTextField
{
}
@end
至于代码的其余部分,您需要将其添加到实现文件的主体中(例如 BGImageTextField.m
),特别是在 @implementation 之间
和 @end
关键字。
我还想提两件事。首先,我建议您阅读 Aaron Hillegass 所著的 Mac OS X 的 Cocoa 编程,它涵盖了我刚刚学习过的大部分 Cocoa 基础知识,并且是学习 Cocoa 的最佳方法之一。总体学习 cocoa 。其次,虽然我的方法有效,但它可能不是最好的方法 - 特别是因为我最近刚刚发现 this post ,这似乎暗示了扩展 NSTextField 的更好方法。
关于cocoa - 如何在 Cocoa 中使用图像作为文本字段的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/765104/