请记住,我是一个真正的新手Cocoa开发者
场景:我已经搜索了从开始到文档重新开始的时间,即所谓的“环绕”。
当我进行换行时,我想在屏幕上显示一段闪烁的窗口(一秒钟??)和OSD(屏幕显示)控制窗口,TextWrangler和XCode在文本搜索从开始重新启动时执行此操作
如何实现类似的窗口?
答案 0 :(得分:3)
实现视图来做到这一点会相对简单。 NSView子类中的以下代码将显示部分透明的圆形rect,当放置在窗口中时忽略事件。
- (void)drawRect:(NSRect)dirtyRect {
[[NSColor colorWithDeviceWhite:0 alpha:.7] set];
[[NSBezierPath bezierPathWithRoundedRect:self.bounds xRadius:10 yRadius:10] fill];
//Additional drawing
}
- (NSView *)hitTest:(NSPoint)aPoint {
return nil;
}
- (BOOL)acceptsFirstResponder {
return NO;
}
- (BOOL)isOpaque {
return NO;
}
如果您确实想在窗口中执行此操作,则需要创建无边框,不透明窗口并将其设置为内容视图。此外,您需要让视图在drawRect:方法的开头用一个清晰的颜色填充它的边界。
//Create and display window
NSPanel *panel = [[NSPanel alloc] initWithFrame:NSMakeRect(0,0,300,200) styleMask:NSBorderlessWindowMask|NSNonactivatingPanelMask backing:NSBackingStoreBuffered defer:YES];
[panel setOpaque:NO];
MyViewSubview *view = [MyViewSubview new];
[panel setContentView:view];
[view release];
[p setLevel:NSScreenSaverWindowLevel];
[p orderFront:nil];
//Add these two lines to the beginning of the drawRect: method
[[NSColor clearColor set];
NSRectFill(self.bounds);
但是,此窗口将拦截事件,我无法使用标准方法禁用此功能。
要淡化视图,请查看NSViewAnimation或使用NSTimer对象并手动执行。