是否有任何方式以覆盖NSScroller的(在IOS等)滚动视图的内容?我已经试了几种方法:

<强> A)设置滚动视图内容视图(NSClipView)的框架延伸到卷轴

的边界

<强> b)中添加NSScroller对象作为滚动视图(定位在我想要)的子视图

<强> c)中创建完全定制卷轴视图,并把它作为一个子视图(这个工作,但是这将意味着我需要重写NSScroller的所有功能)

麻雀似乎成功地做到这一点,似乎通过定期NSScroller子类(看到这样做,因为它响应滚动设置在系统偏好>>外观设定)。这不是真正的绘制是这一问题的滚动条,它只是使其覆盖的内容。

任何意见理解: - )

有帮助吗?

解决方案

在这里你可以设置自定义类的滚动条。

在此之后,通过覆盖-tileNSScrollView方法,你会得到他们妥善安置。

其他提示

下面是我的解决办法: 创建扩展NSScroller一个MyScroller类

在MyScroller.m:

#import "MyScroller.h"


@implementation MyScroller

+(CGFloat) scrollerWidth{
    return 10;
}

+(CGFloat) scrollerWidthForControlSize:(NSControlSize)controlSize{
    return 10;
}

- (void) drawBackground:(NSRect) rect{
    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:0 yRadius:0];
    [[NSColor whiteColor] set];
    [path fill];
}

- (void)drawKnob{
    [self drawBackground:[self rectForPart:0]];
    [self drawBackground:[self rectForPart:1]];
    [self drawBackground:[self rectForPart:2]];
    [self drawBackground:[self rectForPart:4]];
    [self drawBackground:[self rectForPart:5]];
    [self drawBackground:[self rectForPart:6]];


    NSRect knobRect = [self rectForPart:NSScrollerKnob];
    NSRect newRect = NSMakeRect((knobRect.size.width - [MyScroller scrollerWidth]) / 2, knobRect.origin.y, [MyScroller scrollerWidth], knobRect.size.height);
    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:newRect xRadius:5 yRadius:5];
    [[NSColor grayColor] set];
    [path fill];
}
@end

然后,只需设置的自定义类滚轮在界面生成器。

我最近公布的RFOverlayScrollView这应该解决您的问题:

来源: https://github.com/rheinfabrik/RFOverlayScrollView

博客帖子: http://blog.rheinfabrik.de/博客/ 2013/01/01 /导入-rfoverlayscrollview /

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top