NSScrollView 滚动后在 Xcode 5 中显示问题
Posted
技术标签:
【中文标题】NSScrollView 滚动后在 Xcode 5 中显示问题【英文标题】:NSScrollView displaying problems in Xcode 5 after scrolling 【发布时间】:2013-09-23 14:17:41 【问题描述】:NSScrollView
基于自定义视图(图像、复选框和文本标签)显示 NSTableView
。当我滚动时 - 我有延迟(错误?)重绘行。
普通:
滚动后出现问题:
项目(和 .xib 文件)已从 Xcode 4 更新为 Xcode 5 格式。我认为这个错误出现在它之后,但我不确定。
有什么建议可以解决吗?
NSTableViewDataSource、NSTableViewDelegate协议的实现:
- (NSInteger) numberOfRowsInTableView: (NSTableView *) aTableView
return [arrayOfObjects count];
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
CMListItem *currentObject = [arrayOfObjects objectAtIndex: row];
NSString *currentName = [currentObject name];
BOOL currentState = [currentObject state];
NSImage *currentImage = [currentObject getArtwork];
NSString *identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"MainCell"])
CMTableCellView *cellView = [tableView makeViewWithIdentifier: identifier owner: self];
cellView.textField.stringValue = currentName;
cellView.button.state = currentState;
cellView.imageView.image = currentImage;
return cellView;
return nil;
NSScrollView
未修改。
我自己的表格单元格视图 - NSTableCellView
的子类,几乎没有额外的出口。
更新:这件事帮助了我:将所有NSTableView
设置为On
状态Can Draw Concurrently
,然后将其转换为Off
状态。
【问题讨论】:
是的,我确定,这只是一个示例。我的 NSScrollView 上有残像,就像这张图片一样(只是无法上传我自己的图片 - 评分不够)。 dl.dropboxusercontent.com/u/41688771/1.tiff - 正常, dl.dropboxusercontent.com/u/41688771/2.tiff - 滚动后 好吧,请告诉我们如何实现滚动视图委托方法。 我用我的代码修改了原始帖子,希望它有助于找到解决方案)我没有更多的代码,可以在这张桌子上工作。 【参考方案1】:我想我有时会在启用“滚动复制”时看到这个问题。尝试在 IB 中禁用此选项(在属性检查器、滚动视图部分、行为中)。
【讨论】:
谢谢!您的回答帮助我找到了解决方案。不知道为什么,但是当我为所有 NSTableView 树打开“可以同时绘制”时,这个问题就解决了。但是每秒帧数太低,我将其关闭(对于所有树)。现在 - 良好的 FPS,而且没有这种滞后。真的不知道发生了什么,但它有帮助!也许是 Xcode 4 -> Xcode 5 转换问题,也许是其他问题..以上是关于NSScrollView 滚动后在 Xcode 5 中显示问题的主要内容,如果未能解决你的问题,请参考以下文章
带有 CA 图层掩码的 NSScrollView 添加了第二个无用的滚动条
如何在 NSScrollView 中控制 NSTableView 的绘制?