MacOS 开发
来源:互联网 发布:域名ip隐藏 编辑:程序博客网 时间:2024/06/07 03:08
- 一点击关闭时同时移除Dock上的图标
- 方法一当关闭最后一个窗口时退出app
- 方法二关闭窗口时退出程序
- 二点击Dock栏重启
- 1最小化和关闭窗口
- 2实现 applicationShouldHandleReopen 方法
- 三只显示状态栏图标不显示window
- 四使用terminate命令关闭App
- 五隐藏dock 上的图标
一、点击关闭时,同时移除Dock上的图标
运行成功点击关闭后,Dock上还会显示图标。使用下面方法可以彻底关闭和移除。
方法一:当关闭最后一个窗口时,退出app
实现appdelegate 的方法 applicationShouldTerminateAfterLastWindowClosed
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender{ return YES;//YES-窗口程序两者都关闭,NO-只关闭窗口;}
方法二:关闭窗口时,退出程序
1、设置window的delegate.
2、实现代理方法 windowShouldClose
#pragma mark - NSWindowDelegate-(BOOL)windowShouldClose:(id)sender { [self.mainWindowC.window orderOut:nil];//窗口消失 exit(0); return NO;}
二、点击Dock栏重启
如果不想向上面一样,点击关闭就直接关闭全部。还想点击dock后能够重启App,可以使用下面方法:
1、最小化和关闭窗口
如果在窗口的标题栏,点击最小化,那么点击dock上该程序的图标,程序会自动跳出来,并带有动画样式。
如果在标题栏点击关闭,点击dock,程序不会自动跳出来,这时候,需要在delegate.m 中实现
applicationShouldHandleReopen:hasVisibleWindows:
方法。
2、实现 applicationShouldHandleReopen: 方法
- 在该方法中,返回 YES ,点击dock,就会显示主窗口。注意,要把你的主窗口作为delegate中的属性。
- 点击最小化后,点击dock上该应用图标,hasVisibleWindows = 1;打开的效果,是带有动画的效果。
- 点击关闭后,点击dock上该应用图标,hasVisibleWindows = 0;打开的效果,是重启的样式,没有动画
-(BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{ NSLog(@"hasVisibleWindows:%d",flag); [NSApp activateIgnoringOtherApps:NO];//取消其他程序的响应 [self.mainWindowC.window makeKeyAndOrderFront:self];//主窗口显示自己方法一 //[_mainWindow orderFront:nil]; //主窗口显示自己方法二 return YES;}
三、只显示状态栏图标,不显示window
参考:http://www.jianshu.com/p/bd801d926314
1、移除delegate.m 中对window的调用;
2、将 project - general - main interface 的入口清空;
3、在 main.c 文件中 #import "AppDelegate.h"
;
4、修改 int main
方法
5、在delegate.m 中添加状态栏 NSStatusItem 信息,可参考:
- MacOS 开发 - 状态栏 NSStatusBar & NSStatusItem
http://blog.csdn.net/lovechris00/article/details/78011718
int main(int argc, const char * argv[]) { NSApplication *app = [NSApplication sharedApplication]; id delegate = [[AppDelegate alloc]init]; app.delegate = delegate; return NSApplicationMain(argc, argv);}
四、使用terminate
命令,关闭App
如果我们的APP 没有window,却有状态栏,可以在状态栏的菜单(menu)中设置关闭方法
- (void)load1{ NSLog(@"load1 ---- "); [[NSApplication sharedApplication] terminate:self];}
状态栏及设置目录方法,可参考:
- MacOS 开发 - 状态栏 NSStatusBar & NSStatusItem
http://blog.csdn.net/lovechris00/article/details/78011718
五、隐藏dock 上的图标
参考:https://mikulove.com/2017/05/02/macOS-xue-xi-bi-ji-yin-cang-dock-lan-tu-biao/
在info.plist 最后一栏输入 LSUIElement
,选择YES即可。key会自动生成。
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- java垃圾回收角度的内存分配策略
- BlueCoat ProxySG性能问题分析--ICAP排队现象
- BZOJ1007水平可见直线 (凸包)
- bootstack
- BZOJ 1477: 青蛙的约会 扩展欧几里得
- MacOS 开发
- ORA-06512: At "SYS.DBMS_XSTREAM_ADM_INTERNAL" (文档 ID 1956932.1)
- 用Python学《微积分B》(Fourier级数)
- 四种强制类型转换的总结(const_cast、static_cast、dynamic_cast、reinterpreter_cast)
- XAMPP Error: Apache shutdown unexpectedly.This may be due to a blocked port, missing dependencies...
- java设计模式-策略模式
- mount命令--linux管理磁盘分区和目录节点的强大工具
- java读取Excel
- JSP内置对象