MacOS 开发
来源:互联网 发布:java读取hdfs文件目录 编辑:程序博客网 时间:2024/06/14 17:39
- 设置标题
- 设置标题栏图标
- 设置窗口背景颜色
- 设置 Content Border
- 自定义titleBar
- 隐藏titlebar
- 设置为点击背景可以移动窗口
- titleBar和下面的view合并到一起
- 系统提供的样式
- 常用的创建代码
- 1styleMask 按位表示的窗口风格参数
- 2backing窗口绘制的缓存模式
- 3defer表示延迟创建还是立即创建
- 4NSWindowStyleMask
窗口对象包括titleBar,contentView内容视图,contentBoder底部边框区。
titleBar上面包括控制按钮,标题。
设置标题
[self.window setTitle:@"我的 App 标题"];
设置标题栏图标
先将 png 格式图片拖到Assets 中,我的图片名为’swift.png’
配置代码如下:
NSImage *image = [NSImage imageNamed:@"swift"]; [[self.window standardWindowButton:NSWindowDocumentIconButton] setImage:image];
设置窗口背景颜色
- (void)setWindowBKColor { [self.window setOpaque:NO]; [self.window setBackgroundColor:[NSColor cyanColor]];}
设置 Content Border
默认是none 不显示出来.
需要显示的话可以选择 Small/Large Bottom Border 其他选项
这里我还不知道怎么用代码控制,会的可以告诉我。
自定义titleBar
原理:隐藏系统自带的titlebar, 继承NSView自己绘制一个titlebar, 在其上添加相应的关闭,最小化,最大化按钮,可以自定义调节颜色,隐藏,显示,高度,以及添加相应的其它控件。
隐藏titlebar
self.window.titlebarAppearsTransparent=YES;self.window.titleVisibility = NSWindowTitleHidden;
- 但设置
window.contentView
的颜色后,显示效果如下:
设置为点击背景可以移动窗口
- 如果隐藏了标题栏,点击标题栏位置,仍然可以拖动窗口。但是用户不知道标题栏的位置,所以需要设置点击背景也可以移动。
[self.window setMovableByWindowBackground:YES];
titleBar和下面的view合并到一起
xib:在Main.storyboard选中Window,勾选属性Full Size Content View
代码: self.window.styleMask = self.window.styleMask | NSWindowStyleMaskFullSizeContentView;
- 不隐藏titleBar
- 隐藏titleBar
系统提供的样式
常用的创建代码:
NSRect frame = CGRectMake(0, 0, 200, 200);NSUInteger style = NSTitledWindowMask | NSClosableWindowMask |NSMiniaturizableWindowMask | NSResizableWindowMask;NSWindow *window = [NSWindow alloc]initWithContentRect:frame styleMask:style backing:NSBackingStoreBuffered defer:YES];window.title = @"New Create Window";[window makeKeyAndOrderFront:self];
1、styleMask: 按位表示的窗口风格参数
enum { NSBorderlessWindowMask = 0, //没有顶部titilebar边框 NSTitledWindowMask = 1 << 0, //有顶部titilebar边框 NSClosableWindowMask = 1 << 1,//带有关闭按钮 NSMiniaturizableWindowMask = 1 << 2,//带有最小化按钮 NSResizableWindowMask = 1 << 3,//恢复按钮 NSTexturedBackgroundWindowMask = 1 << 8 //带纹理背景的window};
2、backing:窗口绘制的缓存模式
enum { NSBackingStoreRetained = 0,// 兼容老系统参数,基本很少用到 NSBackingStoreNonretained = 1,//不缓存直接绘制 NSBackingStoreBuffered = 2//缓存绘制};
3、defer:表示延迟创建还是立即创建
4、NSWindowStyleMask
typedef NS_OPTIONS(NSUInteger, NSWindowStyleMask) { NSWindowStyleMaskBorderless = 0, NSWindowStyleMaskTitled = 1 << 0,//显示标题 NSWindowStyleMaskClosable = 1 << 1,//可关闭,如果不加,则关闭按钮处显示一个灰色按钮,不可点击 NSWindowStyleMaskMiniaturizable = 1 << 2, //可最小化 NSWindowStyleMaskResizable = 1 << 3,//可调整尺寸,即拉伸 NSWindowStyleMaskTexturedBackground = 1 << 8,//北京味文字,标题栏没有边框线。如果需要线,要使用 NSUnifiedTitleAndToolbarWindowMask NSWindowStyleMaskUnifiedTitleAndToolbar = 1 << 12, //标题栏和toolBar 下有统一的分割线 NSWindowStyleMaskFullScreen NS_ENUM_AVAILABLE_MAC(10_7) = 1 << 14,//全屏显示 NSWindowStyleMaskFullSizeContentView NS_ENUM_AVAILABLE_MAC(10_10) = 1 << 15,//contentView会充满整个窗口。 /* 下面样式只适用于NSPanel及其子类 */ NSWindowStyleMaskUtilityWindow = 1 << 4, NSWindowStyleMaskDocModalWindow = 1 << 6, NSWindowStyleMaskNonactivatingPanel = 1 << 7, NSWindowStyleMaskHUDWindow NS_ENUM_AVAILABLE_MAC(10_6) = 1 << 13 //用于头部显示的panel };
优秀作品:
参考资料:
剑指人心: http://www.macdev.io/ebook/window.html
阅读全文
0 0
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- Spring-MVC接受参数
- 点赞 js
- java file类使用方法详解
- Shell中的调试
- 字符串压缩算法
- MacOS 开发
- 程序16
- HDU 6201 transaction transaction transaction(网络流+最短路)
- 2017.9月计划
- __pthread_initialize_minimal源码分析
- 程序17
- JS扩展、密封、冻结三大特性
- Kotlin笔记(一)
- leetcode 92. Reverse Linked List II 反转链表