2013-03-17 3 views
0

В настоящее время я пытаюсь установить цвет фона/шаблон для NSView с отрицательным фронтом. Проблема в том, что он только окрашивает части вида (те, где x> 0 & & y> 0).Установить цвет фона NSView с отрицательными границами

Я понимаю, что мне нужно нарисовать фон в - (void) drawRect: function. Как я могу покрасить весь вид, а не только те части, где координаты положительны?

NSView Происхождение: -65, -65 Размер: 130, 130

Я хочу, чтобы цвет всей подоплеки

+0

Какая часть этого представления не рисует весь его фон и где находится в иерархии представлений? –

+0

У меня есть NSScrollView, внутри которого есть подкласс NSView. Круг в середине изображения представляет собой NSImageView, который является подзоном подкласса NSView. Я могу отображать subviews в отрицательных областях, но фон не нарисован. То, что я сделал прямо сейчас, это то, что я создал другой NSView с тем же размером и поместил его как подвью. Хотя это не то, что я себе представлял, он решает мою конкретную проблему. –

ответ

0

Попробуйте использовать NSBezierPath объект, чтобы установить цвет фона зрения:

NSColor *color; //your background colour 
CustomView *view; //this is your view, you should init it with the his own class 
[color set]; 
[NSBezierPath fillRect:[view bounds]]; //sets the given Rect with the set colour 

Этот код должен окрашивать весь фон с заданным цветом. Обратите внимание, что вы должны заменить последнюю строку [path fillRect:[self bounds]], если код находится в реализации класса вашего представления.

+0

К сожалению, это не сработает. Нет метода экземпляра fillRect: для NSBezierPath. И если я использую [NSBezierPath fillRect: [self bounds]]; У меня все еще есть одна и та же проблема. –

+0

Да, вы правы, это метод класса. Затем попробуйте создать «NSRect» со свойствами вашего представления (то же происхождение, ширина и высота), а затем вызовите метод '-fillRect' с этим прямоугольником. – Moray

Смежные вопросы