2010-01-07 1 views
3

Я создал iTunes как подкласс NSScroller, однако, если и горизонтальный, и вертикальный скроллеры видны в NSScrollView или NSTableView, я остался с уродливым белым квадратом в нижнем правом углу. Кто-нибудь знает, где добавить свой собственный чертеж, чтобы заполнить его чем-нибудь красивым?Подкласс NSScroller, как избавиться от белого квадрата в нижнем правом углу?

ответ

3

Хорошо, я думаю, что у меня есть решение (ы).

  • Либо вы указываете scrollview, чтобы не рисовать его фон, в этом случае все, что находится под ним, заполнит угол.

  • Или, что то, что я сделал, переопределить метод DrawRect в Scrollview со следующими:

    - (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 
        } 
    } 
    
+2

Немного аккуратнее решение может быть, чтобы добавить поддержку для подвид здесь, а не в отличие от cornerView , и переопределение метода -tile для позиционирования и отображения/скрытия этого представления. Таким образом, вы можете создавать различные аккуратные пользовательские представления и просто подключать их туда, выращивать ящики, набивные наполнители, кнопки ... – uliwitness

+0

Первое решение здесь, похоже, не работает. Если я скажу прокрутку, чтобы не рисовать ее фон, тогда угол заполняется белым цветом, хотя фон окна темный. – JWWalker