cocoa - 如何在 Cocoa 中使用图像作为文本字段的背景?

标签 cocoa image background-image

是否可以使用图像作为 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/

相关文章:

css - 以与使用 background-img 相同的方式使 <img> 具有响应性和 SEO 友好性

带有图像叠加的 CSS 背景渐变

cocoa 控制文本位置?

iphone - 在 Cocoa 中解析 NSXMLElement

image - 在黑莓中将编码图像转换为位图

mysql - CodeIgniter:在数据库中存储图像?

css - iphone 不显示背景图片

objective-c - 为什么 Objective-C 中会自动调用这个委托(delegate)方法?

swift - 无法使用 Cocoa/Swift/Quartz 绘制成新的 PDF

html - 在 CSS : caption box doesn't resize according to image size 中编码的悬停预览