NSWindow如何实现圆角
来源:互联网 发布:魔兽世界编程宝典 pdf 编辑:程序博客网 时间:2024/06/06 03:46
分两步走:
1.子类化NSWindow,主要是重载了下面这个函数
- (id)initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)aStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag {
self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
if (self != nil) {
[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];
}
return self;
}
2.子类化NSWindow的view,重载drawRect,其中的圆角半径和背景颜色自己可以调整
- (void)drawRect:(NSRect)dirtyRect
{
[NSGraphicsContext saveGraphicsState];
NSRect rect = [self bounds];
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:5 yRadius:5];
[path addClip];
[[NSColor controlColor] set];
NSRectFill(dirtyRect);
[NSGraphicsContext restoreGraphicsState];
[super drawRect:dirtyRect];
}
实现demo效果如下:
- NSWindow如何实现圆角
- 没有标题栏的NSWindow如何拖动
- NSWindow 了解
- NSWindow知多少?
- NSWindow with rounded corners
- NSWindow的样式
- NSWindow.setFrame的坑
- NSWindow 直接加载NSViewController
- NSWindow 通过Dock栏reopen
- NSWindow支持Drag-and-Drop
- NSWindowController 和 NSWindow 的关系
- NSWindow 通知/关闭/退出app
- 自定义NSWindow,Round Corner,Non-TitleBar
- Cocoa 让自定义view铺满整个NSWindow
- [系统控件重绘教程(一)]重绘NSWindow
- Mac NSWindow窗口Size变化时的事件处理
- NSWindow does not support utility styleMask 0x10
- macOS开发中NSWindow, NSWindowController, NSView, NSViewController的关系
- ant教程详解--javac,java,jar,war,delete,copy,mkdir,move等指令 zz
- DIV+CSS布局中IE与FF浏览器之间重要的兼容性差异
- 理解Javascript的闭包
- Xcode 和 mac 的一些快捷键
- ios下解析json字符串
- NSWindow如何实现圆角
- Android -- 重写按键事件的注意事项
- 程序员必知8大排序
- 预编译 头文件 stdafx.h
- 这个人很懒
- C++ Virtual详解
- makefile 实例一
- 静or动态库中的全局变量被不同的dll调用修改,其值是否独立?
- android完全退出程序 (所有版本通用)