我正在尝试以编程方式创建一个带有自定义contentView
和一个自定义控件的窗口NSTextField
,但是我无法让这种窗口和视图的层次结构自行绘制。
我创建了一个自定义无边框窗口并覆盖它的setContentView
/contentView
访问器。这似乎工作正常,自定义 contentViewinitWithFrame
和drawRect
方法被调用,导致 contentView 正确绘制自己。
但是,一旦我尝试以编程方式添加自定义NSTextField
,contentView
它就不会被添加或绘制。通过说自定义,我的意思是我覆盖了它的指定初始化程序(initWithFrame:frame
- 仅用于自定义字体设置)和 drawRect 方法,如下所示:
- (void)drawRect:(NSRect)rect {
NSRect bounds = [self bounds];
[super drawRect:bounds];
}
自定义 contentView 的初始化程序如下所示:
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self != nil) {
// i want to draw itself to the same
// size as contentView thus i'm using same frame
CustomTextField *textField = [[CustomTextField alloc] initWithFrame:frame];
[self addSubview:textField];
[self setNeedsDisplay:YES];
}
return self;
}
我已经为此苦苦挣扎了几个小时,因此非常感谢任何指针。更多代码可根据要求提供。)