程序坞与菜单栏_安卓任务栏app[通俗易懂]

程序坞与菜单栏_安卓任务栏app[通俗易懂]1.先展示一下效果图:1.1四方格图标就是菜单栏APP1.2点击后的显示图,里面已经被我加载了一下APP,当点击这些APP的时候,会打开对应的APP.1.3当点击”+/-“按键的时候,可以打开APP添加删除界面,如果需

1.先展示一下效果图: 

1.1 四方格图标就是菜单栏APP程序坞与菜单栏_安卓任务栏app[通俗易懂]

 1.2 点击后的显示图,里面已经被我加载了一下APP,当点击这些APP的时候,会打开对应的APP.

程序坞与菜单栏_安卓任务栏app[通俗易懂]

1.3 当点击”+/-“按键的时候,可以打开APP添加删除界面 ,如果需要添加APP,把APP拉到界面中,它会自动添加到表格里,如果需要移除APP,选中需要移除APP的那一行,再点击移除按键”-“就可以移除APP。在添加和移除后,记得保存一下,然后关闭这个界面,点击“Exit”按键退出BasketAPP,重新打开完成加载。

程序坞与菜单栏_安卓任务栏app[通俗易懂]

2.BasketAPP的作用:

      将需要用到的APP添加到里面,方便使用,但有人要说了,不是有程序坞吗?是的,但那是放更重要的APP的地方,BasketAPP可以放一些工具类的APP,这也是它开发出来的意义所在。可能又有人要问了,它是不是只能放6个APP?回答是:NO,界面的大小最优是6个,但可以一直往下叠加,只要你不下麻烦。因为是临时的想法,所以用了一两天的时候找了一些资料开发出来的,嗯,也可以通俗的来讲,就是为了好玩。

3.功能模块的实现(需要用到的技能)

3.1  首先需要用到Objective-C语言和X-code工具,其次需要用到PS去P一个图标出来,当然,从网上找也行,但PS会更随心一点。

3.2 菜单栏图标的实现

  3.2.1 新建一个项目   

程序坞与菜单栏_安卓任务栏app[通俗易懂]

名称自己填

程序坞与菜单栏_安卓任务栏app[通俗易懂]

    3.2.2  在项目运行的时候,需要把桌面显示的界面去掉,已经去掉程序坞中的界面,因为我们只想保留菜单栏上的图标

先把图标右上角的 Is Initital Controller点掉,

程序坞与菜单栏_安卓任务栏app[通俗易懂]

程序坞与菜单栏_安卓任务栏app[通俗易懂]

 在info中添加Application is agent (UIElement),将其值设为YES

程序坞与菜单栏_安卓任务栏app[通俗易懂]

目前运行起来,程序是没有界面的,也没有在程序坞中生产图标,但现在还没有菜单栏的图标,下一步需要生成菜单栏图标 

3.2.3 生成菜单栏

点击Assets.xcassets,在左下角点击+号图标,添加Image Set,将其命名为setting,将图标拉到1x中,图标的大小是18像素*18像素

程序坞与菜单栏_安卓任务栏app[通俗易懂]

程序坞与菜单栏_安卓任务栏app[通俗易懂]

 最后一步,在AppDelegate中添加下面的代码

#import "AppDelegate.h"
#import <AppKit/AppKit.h>

@interface AppDelegate ()
@property(nonatomic, strong)NSStatusItem *ToolsItem;

@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
    //创建菜单栏图标
    self.ToolsItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
    NSImage *image = [NSImage imageNamed:@"setting"];
    [self.ToolsItem.button setImage:image];
}


- (void)applicationWillTerminate:(NSNotification *)aNotification {
    // Insert code here to tear down your application
}

再次运行就发现菜单栏中有对应的图标啦,但仅仅有图标还是不行的,需要点击它有下拉框

  3.3 菜单栏图标添加下拉视图的实现

  要实现下拉视图,需要用到NSPopover视图

  3.3.1 先添加一个View的Controller类,把创建XIB视图勾选上

程序坞与菜单栏_安卓任务栏app[通俗易懂]

   3.3.2 把AppDelegate.m里面的代码换成下面的代码:


#import "AppDelegate.h"
#import <AppKit/AppKit.h>
#import "ToolsPopverController.h"
@interface AppDelegate()

@property(nonatomic, strong)NSStatusItem *ToolsItem;
@property(nonatomic, strong)NSPopover *popover;

@end


@interface AppDelegate ()


@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
    //创建菜单栏图标
    self.ToolsItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
    NSImage *image = [NSImage imageNamed:@"setting"];
    [self.ToolsItem.button setImage:image];
    
    //创建弹窗
    _popover = [[NSPopover alloc]init];
    _popover.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua];
    //[NSAppearance appearanceNamed:NSAppearanceNameAccessibilityHighContrastVibrantLight];
    //绑定弹窗视图
    _popover.contentViewController = [[ToolsPopverController alloc]initWithNibName:@"ToolsPopverController" bundle:nil];
    _popover.behavior = NSPopoverBehaviorTransient;
    //self.ToolsItem.target = self; -- 该方法已经弃用
    self.ToolsItem.button.action = @selector(showMyPopover:);
}


- (void)applicationWillTerminate:(NSNotification *)aNotification {
    // Insert code here to tear down your application
}

- (void)showMyPopover:(NSStatusBarButton *)button {
    [_popover showRelativeToRect:button.bounds ofView:button preferredEdge:NSRectEdgeMaxY];
    
    [self.popover.contentViewController.view.window makeFirstResponder:self.popover.contentViewController.view.window];
}


@end

再次运行生成菜单栏后,点击图标就可以有下拉视图

程序坞与菜单栏_安卓任务栏app[通俗易懂]

3.3 添加功能到下拉视图中:(因人而异,就不细说了)

   正常来说只需要在视图中添加一个NSButton按键,把Button按键连到对应的APP就可以了,打开链接的APP可以调用终端中的open命令。如果想把它弄得更好,可以做更多的尝试。记得添加一个退出的按键,要不没办法关闭APP.

4.我的想法以及最终的实现

      最开始的时候我只是固定几个Button按键,链接固定几个APP,但这样太死板了,于是我添加了一个plist,把APP的名称和APP的路径添加到这个plist里面,这样就可以通过右键打开包内容来更改里面的plist。

    后面又想了一下,我的视图不能太大,两行三列,只能放六个,但这样不行,我需要放更多的APP,所以我在视图中又添加了一个NSScrollView视图,把APP放到里面,这涉及到一个问题,就是不能固定拉几个Button按键到视图中,需要代码自动生成button按键,而且每个的位置需要处理一下,当添加APP的时候,自动往下生成一个button按键,代码参考如下:

 self.ScrollView.hasVerticalScroller = NO;
    self.ScrollView.hasHorizontalScroller = NO;
    if (configArray.count>4) {
        [self.ContentView setFrame:NSMakeRect(0, 35, 314, xArray.count*(32+10))];
    }
    
    for (int i=0; i<xArray.count; i++) {
        NSString *name = [xArray[i] objectForKey:@"name"];
        if (i==0) {
            NSButton *button = [[NSButton alloc]initWithFrame:NSMakeRect(14, _ContentView.frame.size.height-32, 124, 32)];
            button.title = name;
            button.bezelStyle = NSBezelStyleRegularSquare;
            button.action = @selector(buttonAction:);
            [self.ContentView addSubview:button];
        }else {
            NSButton *button = [[NSButton alloc]initWithFrame:NSMakeRect(14, _ContentView.frame.size.height-32*(i+1)-10*i, 124, 32)];
            button.title = name;
            button.bezelStyle = NSBezelStyleRegularSquare;
            button.action = @selector(buttonAction:);
            [self.ContentView addSubview:button];
        }
    
    }
    
    for (int i=0; i<yArray.count; i++) {
        NSString *name = [yArray[i] objectForKey:@"name"];
        if (i==0) {
            NSButton *button = [[NSButton alloc]initWithFrame:NSMakeRect(157, _ContentView.frame.size.height-32, 124, 32)];
            button.title = name;
            button.bezelStyle = NSBezelStyleRegularSquare;
            button.action = @selector(buttonAction:);
            [self.ContentView addSubview:button];
        }else {
            NSButton *button = [[NSButton alloc]initWithFrame:NSMakeRect(157, _ContentView.frame.size.height-32*(i+1)-10*i, 124, 32)];
            button.title = name;
            button.bezelStyle = NSBezelStyleRegularSquare;
            button.action = @selector(buttonAction:);
            [self.ContentView addSubview:button];
        }
    
    }

这样的话,可以一直往plist里面添加APP了,到这里已经可以告一段落了

但是!!!我不满足呀,我需要傻瓜式操作,不需要右键打开包去改里面的plist来添加和删除视图,于是,我在下拉视图中添加了一个”+/-“按键,这个按键可以打开另外一个视图,这个视图可以用来添加APP,视图的话,可以看上面的第三张图,我往table中添加的时候,相对应的添加到plist中,修改plist,同样会在table中显示当前的app,把table和plist关联起来了,这样修改方便多了。

目前还有个不是问题的问题,就是添加或者删除APP后,需要退出BasketAPP,再次打开才行。

最后说一句:打字好累呀!~o~

2021年11月5号

前段时间兴趣使然,更改了该APP,把之前遗留的问题处理了一下,顺便添加一些新功能。

1.之前在添加/删除后需要退出BasketAPP,现在不需要了

程序坞与菜单栏_安卓任务栏app[通俗易懂]

2.添加了电脑开机自启的功能,当勾选这个功能后,电脑开机,软件自动打开

3.添加了备份所选APP功能,这个功能主要是防止连接的APP因为挪动位置导致从BasketAPP界面打不开

如果需要体验:菜单栏程序坞安装包.dmg-其它文档类资源-CSDN文库

今天的文章程序坞与菜单栏_安卓任务栏app[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/85068.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注