【问题标题】:Custom NSScrollers having weird effect from Core Animation自定义 NSScrollers 具有来自 Core Animation 的奇怪效果
【发布时间】:2010-07-18 08:48:35
【问题描述】:

我正在制作用于 NSScrollView 的自定义 NSScrollers。但是当 NSScroller 的任何超级视图启用核心动画时。我得到这个绘图问题,这是一个巨大的麻烦。每当我滚动到滚动视图的角落时,滚动条都会剪辑。但是如果一个滚动条开始在角落里绘制,滚动条部分会停留在那个角落里。什么可能导致这个问题?我有太多代码要在这里显示。但这是我的绘图代码:

NSRect knobRect = [self rectForPart:NSScrollerKnob];

NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:knobRect 
                                                     xRadius:CornerRadius 
                                                     yRadius:CornerRadius];

[path setLineWidth:2];
[[NSColor colorWithDeviceRed:0.114 green:0.114 blue:0.114 alpha:0.3] set];
[path fill];
[[NSColor colorWithDeviceWhite:1.0 
                         alpha:0.100] set];

    // Clip drawing to this path; draw nothing outwith the path. 
[path addClip];
[path stroke];

我已经尝试摆脱除了填充之外的所有东西,但它没有用。如果我在调用 setFloatValue 时在超级视图上调用 setNeedsDisplay:YES,此问题就会消失。

Clipping Issue http://idkz.org/b814ee5c875c9f44cc2d1345e4489420

【问题讨论】:

    标签: objective-c cocoa drawing core-animation nsscrollview


    【解决方案1】:

    看来问题的答案好像是拨打:
    [self setArrowsPosition:NSScrollerArrowsNone]; 它神奇地起作用:D

    编辑,但是当我拖动滚动条时我得到了类似的效果。 :'( 有没有在不重绘滚动视图本身的情况下清除图形?:(

    【讨论】:

      【解决方案2】:

      您可能已经知道了,但在您的情况下,以下部分应该可以解决您的绘图问题:

      -(BOOL)isOpaque {
         return NO;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-30
        相关资源
        最近更新 更多