我有一个NSTextView,用于显示计时器。此计时器每秒更新一次,计数到00:00。当计时器更新NSTextView的字符串时,NSTextView就像重绘它一样,但使用其父视图背景作为其自己的背景。
我的NSTextView具有清晰的背景颜色,并且已设置为不绘制其背景。其父视图为其自己的背景绘制了一个3部分图像。下面是NSTextView的代码。
_timerLabel = [[NSTextView alloc] init];
[self.timerLabel setSelectable:NO];
[self.timerLabel setEditable:NO];
self.timerLabel.font = fontLoaded ? [NSFont fontWithName:@"DS-Digital" size:26.0f] : [NSFont fontWithName:@"Lucida Grande" size:26.0f];
self.timerLabel.textColor = [NSColor colorWithCalibratedRed:(50.0f/255.0f) green:(50.0f/255.0f) blue:(50.0f/255.0f) alpha:1.0f];
self.timerLabel.backgroundColor = [NSColor clearColor];
[self.timerLabel setDrawsBackground:NO];
[self.timerLabel setAllowsDocumentBackgroundColorChange:NO];
[self.timerLabel setAlignment:NSCenterTextAlignment];
self.timerLabel.string = @"5:11";
[self addSubview:self.timerLabel];
任何想法为什么会发生这种情况?我已经尝试了我能想到的或在苹果文档中找到的所有内容,但没有解决我的问题。任何帮助将不胜感激。
在更新NSTextView中的文本之前 https://www.dropbox.com/s/za3twd8hb7r1apr/Screen%20Shot%202013-04-10%20at%205.37.10%20PM.png
更新NSTextView中的文本后 https://www.dropbox.com/s/p0bsk63o8yweyqs/Screen%20Shot%202013-04-10%20at%205.37.28%20PM.png
答案 0 :(得分:0)
我弄清楚发生了什么,并想到我分享以防其他人遇到同样的问题。
更新NSTextView的文本时(也可以是NSTextField),使用更新的NSTextView的rect调用drawRect函数。
在我的情况下,我的绘制rect正在将我的NSView背景的3部分图像绘制到drawRect函数中提供的rect。由于rect是NSTextView的矩形并更新为其字符串,因此这将重绘我的背景图像以获得NSTextView的大小。
目前我唯一能够提出的解决方案是始终为我的NSView边界绘制我的3部分图像。
希望自那以后。