objective-c - 修改 NSScroller 的长度

标签 objective-c cocoa macos nsscrollview nsscroller

我在我的 Cocoa 应用程序中使用 NSScrollView,我想自定义水平滚动条的长度。 ScrollView 的内容分为两个主要区域:左侧的固定宽度区域和右侧的动态宽度区域。左侧区域仅垂直滚动——当用户左右滚动时,它会固定在 View 的左侧。这是正在滚动的 View 的屏幕截图:

http://jarodlong.com/dropbox/nsscroller_issue.png

我不希望水平滚动条与左侧的固定区域重叠。它应该被限制在右边的区域。

有没有办法在不子类化 NSScrollView 的情况下做到这一点?我真的希望不必子类化,但如果有必要,这样做时我应该注意什么?

我试过只设置水平滚动条的框架,但我认为 NSScrollView 会不断调整滚动条的大小以适应整个区域。

最佳答案

我认为在这种情况下我会使用两个单独的 ScrollView ,一个在另一个里面。

好吧,我和一个 friend 核实过,结果发现在 Lion 上,你在 NSScrollview 中仍然有 NSScroller 实例,尽管它们是在 GL 表面上绘制的.未经测试,但像这样的东西应该可以解决问题:

@implementation MyScrollView : NSScrollView

- (void) tile
{
[super tile];
id scroller = [self horizontalScroller];
NSRect scrollerRect = [scroller frame];
   // adjust scrollerRect as you want to here
[scroller setFrame:scrollerRect];
}

关于objective-c - 修改 NSScroller 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075404/

相关文章:

ios - 如何正确编写这个正则表达式代码片段?

iphone - 这个 UI 元素是什么

ios - 当我在 iOS 应用程序中看到很长的 View 并包含大量图像时,我该怎么办

ios - UIScrollView 框架随机更改

ios - 这是运行通用方法的正确方法吗?

objective-c - 如何在 NSLog 中显示 NSString

objective-c - OS X如何申请 "clean"内存?

macos - Mac 上 Qt Creator 的单文档界面

clock_gettime 每秒都会出现故障

ios - 通过共享扩展从图库保存照片时 NSData WriteToFile 失败