覆盖NSScroller对内容
-
26-09-2019 - |
题
是否有任何方式以覆盖NSScroller的在强>(在IOS等)滚动视图的内容?我已经试了几种方法:
<强> A)强>设置滚动视图内容视图(NSClipView)的框架延伸到卷轴
的边界<强> b)中强>添加NSScroller对象作为滚动视图(定位在我想要)的子视图
<强> c)中强>创建完全定制卷轴视图,并把它作为一个子视图(这个工作,但是这将意味着我需要重写NSScroller的所有功能)
麻雀似乎成功地做到这一点,似乎通过定期NSScroller子类(看到这样做,因为它响应滚动设置在系统偏好>>外观设定)。这不是真正的绘制是这一问题的滚动条,它只是使其覆盖的内容。
任何意见理解: - )
解决方案
在此之后,通过覆盖-tile
的NSScrollView
方法,你会得到他们妥善安置。
其他提示
下面是我的解决办法: 创建扩展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 /
不隶属于 StackOverflow