自定义ScrollView,如何使NSView setFrame:更快?

时间:2011-07-07 08:31:24

标签: objective-c cocoa scroll nsview

我正在制作自己的ScrollView。 这是我用于滚动鼠标滚轮或触摸板的代码 但它无法完美无缺。它有点滞后。

- (void) scrollWheel:(NSEvent *)theEvent
{
    NSRect rect = [contentView frame];
    rect.origin.x += [theEvent deltaX];
    rect.origin.y += [theEvent deltaY];

    [contentView setFrame:rect];
}

当我对图层(测试)做同样的事情时,效果会更好。

[CATransaction setDisableActions:YES];
[CATransaction begin];
[contentView layer].frame = newRect;
[CATransaction commit];

如何使setFrame完美无缺?

1 个答案:

答案 0 :(得分:0)

我很努力,看看苹果在NSScrollView中是如何完成的。答案是他们制作高性能绘图 - 只有改变的部分,而不是通常所做的整个视图。

之后我决定自定义标准的scrollView和标准滚动条。