【问题标题】:Subclassing NSScroller, how to get rid of the white square in the lower right corner?子类化NSScroller,如何去掉右下角的白色方块?
【发布时间】:2010-01-07 23:44:48
【问题描述】:

我创建了一个类似 iTunes 的 NSScroller 子类,但是如果水平和垂直滚动条在 NSScrollView 或 NSTableView 中都可见,我会在右下角留下一个难看的白色方块。任何人都知道在哪里添加我的自定义绘图以填充更漂亮的东西?

【问题讨论】:

    标签: objective-c cocoa appkit nsscrollview nsscroller


    【解决方案1】:

    好的,我想我有解决方案。

    • 要么告诉滚动视图不要绘制它的背景,否则它下面的任何东西都会填满角落。

    • 或者,这就是我所做的,您使用以下内容覆盖滚动视图的 drawRect 方法:

      - (void)drawRect:(NSRect)rect{
         [super drawRect: rect];
      
         if([self hasVerticalScroller] && [self hasHorizontalScroller]){
           NSRect vframe = [[self verticalScroller]frame];
           NSRect hframe = [[self horizontalScroller]frame];
           NSRect corner;
           corner.origin.x = NSMaxX(hframe);
           corner.origin.y = NSMinY(hframe);
           corner.size.width = NSWidth(vframe);
           corner.size.height = NSHeight(hframe);
           // your custom drawing in the corner rect here
        }
      }
      

    【讨论】:

    • 一个稍微整洁的解决方案可能是在此处添加对子视图的支持,与cornerView 不同,并覆盖 -tile 方法以正确定位和显示/隐藏该视图。这样,您就可以创建各种整洁的自定义视图,然后将它们挂在那里、增长框、存根填充器、按钮......
    • 这里的第一个解决方案似乎不起作用。如果我告诉滚动视图不要绘制它的背景,那么即使窗口背景很暗,角落也会被白色填充。
    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2016-09-23
    相关资源
    最近更新 更多