Это лучше всего объясняется этими двумя картинками. На первом снимке отображается nsbutton, который еще не был виден, второй показывает тот же nsbutton, когда я навис над ним.NSView drawRect, мешающий указателю NSButton
Как вы можете видеть, внешний вид беззерновой линии NSView, по-видимому, также нарисован на кнопке. Кнопка является обычным экземпляром NSButton, без подкласса.
Вот мой заказ NSView:
#import "MyView.h"
@implementation MyView
- (void)drawRect:(NSRect)rect
{
NSBezierPath *path;
path = [NSBezierPath bezierPathWithRect:rect];
[[NSColor redColor] set];
[path fill];
rect.size.width -= 10;
rect.size.height -= 10;
rect.origin.x += 5;
rect.origin.y += 5;
path = [NSBezierPath bezierPathWithRect:rect];
[[NSColor whiteColor] set];
[path fill];
}
- (void)awakeFromNib
{
NSButton *commandButton = [[NSButton alloc] initWithFrame:NSMakeRect(90, 50, 100, 18)];
[commandButton setButtonType:NSMomentaryPushInButton];
[commandButton setBordered:YES];
[commandButton setTitle:@"Test!"];
[commandButton setFont:[NSFont fontWithName:@"LucidaGrande" size:14.0]];
[commandButton setBezelStyle:NSInlineBezelStyle];
[self addSubview:commandButton];
}
@end
Ах, спасибо за объяснение. Если я правильно понял, я мог бы также проверить, соответствует ли рекурсивно тот же размер, что и границы, если это не так, тогда мне вообще не нужно рисовать. (тогда это кнопка, зависающая или что-то еще). – Wesley
Нет, в этом конкретном случае вам нужно перерисовать этот белый фон - кнопка также рисует вне своего овала, но внутри его рамки. –
О да, потому что это прозрачные края. Спасибо за четкое объяснение. – Wesley