swa*_*tel 0 macos cocoa objective-c nsview nsbutton
我想实现一个投射到 NSView 之外的按钮。类似的按钮如下图所示。
如果您必须让视图溢出窗口,则不能使用masksToBound
以下属性来做到这一点CALayer
来做到这一点。您需要使用子无边框窗口并将其正确放置。
这是一个示例(在 ObjC 中):
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
NSRect windowFrame = self.window.frame;
NSRect childWindowFrame = {
.origin.x = CGRectGetMidX(windowFrame) - 25,
.origin.y = CGRectGetMinY(windowFrame) - 25,
.size.width = 50,
.size.height = 50,
};
NSWindow *childWindow = [[NSWindow alloc] initWithContentRect:childWindowFrame
styleMask:NSWindowStyleMaskBorderless
backing:NSBackingStoreBuffered
defer:YES];
childWindow.backgroundColor = [NSColor clearColor];
childWindow.contentView.wantsLayer = YES;
childWindow.contentView.layer.backgroundColor = [NSColor redColor].CGColor;
childWindow.contentView.layer.cornerRadius = 25.0;
[self.window addChildWindow:childWindow ordered:NSWindowAbove];
}
Run Code Online (Sandbox Code Playgroud)
此屏幕截图中的红色圆圈是子窗口。
归档时间: |
|
查看次数: |
431 次 |
最近记录: |