你怎么可以使用图像作为背景为文本字段在可可?
-
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
关键字之间。
我也想提两件事情。首先,我建议拿起副本的可可规划为Mac OS X 的,由艾伦·希尔加斯,它涵盖了大部分可可基础知识,我刚去了,而且是对的最佳途径之一一般学习可可。其次,虽然我的方法有效,它可能不是最好的方法,尤其是因为我刚刚发现这个帖子,这似乎在延伸的NSTextField的更好的方式来暗示。
其他提示
相反子类的NSTextField的,只是使背景色透明[NSColor clearColor],并把该图像后面。
不隶属于 StackOverflow