gpt4 book ai didi

objective-c - NSScrollView 搞乱了 NSGradient (损坏)

转载 作者:行者123 更新时间:2023-12-03 16:29:38 25 4
gpt4 key购买 nike

我制作了一个自定义框,它是 NSBox 的子类。我重写 drawRect: 方法并在其中绘制渐变,如下所示(假设我已经有 startend 颜色):

-(void)drawRect:(NSRect)dirtyRect {
NSGradient *gradient = [[NSGradient alloc] initWithStartingColor:start endingColor:end];
[gradient drawInRect:dirtyRect angle:270];
[gradient release];
}

现在这个框被添加为 NSCollectionView 原型(prototype) View 的 subview 。在 View 的原始状态下,它看起来像这样:

enter image description here

将 View 滚动到视线之外并再次返回后,它看起来像这样:

enter image description here

为什么我的梯度会这样损坏,我该如何修复它?谢谢!

最佳答案

那个dirtyRect参数不一定代表整个盒子。如果 Cocoa 决定只有原始帧的一个子帧需要(重新)绘制,则 dirtyRect 仅表示该子帧。如果您为整个帧绘制了渐变,然后(重新)为子帧绘制了相同的渐变,则它们可能不匹配。

尝试:

[gradient drawInRect:[self bounds] angle:270];

相反。

进一步说明:看起来您的渐变对象可以被缓存,而不是在 -drawRect: 内创建/释放。

关于objective-c - NSScrollView 搞乱了 NSGradient (损坏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com