objective-c - 不扩展 NSScroller

标签 objective-c macos cocoa nsscrollview nsscroller

当用户将鼠标悬停在 NSScroller 上时,它会自动扩展其宽度。

enter image description here

但是,文档 View 的空间很小,这就是滚动条不应展开的原因。

如何禁用此行为?

最佳答案

这可能有点太晚了,但是这样的东西可能会有所帮助?

1) 为垂直滚动条创建自定义滚动条。

2) 重写 -drawKnob 以强制绘制旋钮为默认大小,即使它要“展开”绘制。

-(void)drawKnob
{
    NSRect knobSlot = [self rectForPart:NSScrollerKnob];
    if(sFlags.isHoriz)
    {
        knobSlot.size.height = 9;
        knobSlot.origin.y = 6;
    }
    else
    {
        knobSlot.size.width  = 9;
        knobSlot.origin.x = 6;
    }

    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:knobSlot xRadius:5 yRadius:5];

    [[NSColor scrollBarColor] set];
    [path fill];
}

3) 根据您是否仍需要旋钮槽,覆盖 -drawKnobSlotInRect:

-(void)drawKnobSlotInRect:(NSRect)slotRect highlight:(BOOL)flag
{
    NSRect newRect = slotRect;
    if(sFlags.isHoriz)
        newRect.origin.y = 4;
    else
        newRect.origin.x = 4;
    [super drawKnobSlotInRect:newRect highlight:flag];
}

关于objective-c - 不扩展 NSScroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15863923/

相关文章:

objective-c - 将 Intruments 跟踪文件与 Xcode 项目连接起来

ios - UIImageView 未在所有设备上加载图像

c - 如何在 Mac OS X 上通过 C API 获取当前线程的堆栈大小? (不含 cocoa 或碳)

objective-c - QTKitServer 保留在事件监视器中

ios - 以编程方式嵌入 UIViewController?

ios - 无法通过添加 UIAlertAction 来关闭 UIAlertViewController 的警报模式

macos - 为什么代码.快捷方式在 OSX 上不起作用?

c++ - EXC_BAD_ACCESS 从 NSTimer 调用 c++ 类方法

cocoa - 如何在 Mac OS X 10.5 中处理 Finder 中的多个文件拖放操作?

objective-c - 如何在 Mail.app (Mac) 上创建邮件中间包含图像资源的邮件