У меня есть nsview, и я использую рисовать прямоугольник, чтобы нарисовать изображение для фона.У этого также есть 3 nsbuttons подпредставлений.Проблема в том, что когда мышь нажимает на кнопку, другие кнопки исчезают.Но когда я удаляю метод draw rect, этого не происходит.Поэтому я предполагаю, что это связано с методом рисования прямоугольника для рисования изображений.
Как мне избежать этого?Спасибо.
РЕДАКТИРОВАТЬ: Хорошо, я понял, где проблема.По сути, у меня есть NSMenuItem, и я помещаю представление в него с 3 кнопками.Но в NSMenu вверху есть отступ в 4 пикселя.Таким образом, чтобы удалить это заполнение, я использовал решение, представленное здесь: Разрыв над пользовательским представлением NSMenuItem
Из решения есть строка в методе drawRect:
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
Момент, я убираю эту строку, и кнопка ведет себя правильно.Но потом, отступы сверху не уходят.
Вот мой розыгрыш:
- (void) drawRect:(NSRect)dirtyRect {
[[NSGraphicsContext currentContext] saveGraphicsState];
NSRect fullBounds = [self bounds];
fullBounds.size.height += 4;
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
NSImage *background = [NSImage imageNamed:@"bg.png"];
[background drawInRect:fullBounds fromRect:NSZeroRect operation:NSCompositeCopy fraction:100.0];
[[NSGraphicsContext currentContext] restoreGraphicsState];
}