Tag: macOS
-
Tray - macOS菜单栏app开发库
最近开发了JustTodo和DeskNote两个macOS应用,都是启动入口在菜单栏的,通过菜单栏上图标点击,快速执行相关操作,这让我想起我开发第一款菜单栏app Translator时的痛苦。因为想使用最新的SwiftUI作为UI框架,但是此框架构建菜单栏app的资料很少,大多数都是生成一个简单菜单,而不是可以自定义的复杂界面,尤其是用swiftUI构建的界面。 为了解决这一痛点,在总结了JustTodo和DeskNote两个macOS应用开发经验后,决心自己做了一个菜单栏应用快捷库Tray,方便以后使用。 -
发布Swift Package库
最近开发JustTodo时,发觉把处理托盘应用的代码封装起来是很有必要的,这样的话,在以后开发其他应用时,便不需要一而再的写重复代码。以前发布过很多Android平台的类库,但是对于macOS平台的swift库,我还是第一次。 再次吐槽一下苹果生态下的包管理,挺混乱的,最终我选择使用最新的Swift Package Manager -
JustTodo开发(五) SwiftUI + web
初版完成以后,发现了一个问题,就是web中的输入框不接受复制/粘贴的快捷键(cmd+c, cmd+v),触发快捷键时,会弹“咚”一声系统音,暂时在AppKit下没能解决这个问题,搜了很多资料,比如这里-Cut/copy/paste keyboard shortcuts not working in NSPopover,想要支持这两个快捷键还是很不容易的,其实包括cmd+x, cmd+a也都不支持,但是我想到之前写的同样是托盘应用Translator,这个就支持这些快捷键,让我突然想到,是不是可以在SwiftUI下,封装一个WKWebView,然后再加载web内容呢? -
JustTodo开发(四) 初版完成
初版已经完成,从切换到SoberJS,基本上只用了一周,便写出来了,如果是使用macOS的原生开发方案,可能现在还困在各种不兼容中。 -
JustTodo开发(三) 更换技术路线,跑步前进
在尝试使用AppKit原生开发界面几天后,我还是放弃了这种尝试了,其羸弱UI表现力,真的是让搭建界面的我心力交瘁。转而,我尝试使用web的形式来开发,即NSPopover中嵌套WKWebView的方式,配合原生层提供一些数据库接口。 -
JustTodo开发(二) 界面初始化
一、界面布局 一个简单的界面布局描述如下: --------------------- | | | | | | | | | | 1 | 2 | | | | | | | | |---------------| | | 3 | --------------------- 简单分为3个区域: 导航 - 用于做Todo Item的分类导航,是一个列表; 内容 - 展示当前分类下的Todo Items; 输入 - 在当前分类下创建新的Todo。 -
JustTodo开发(一) 项目初始化
正如很多开发者一样,进入一个新平台开发连带学习,通常都会开发一个极简的应用,很多人都会开发Todo类应用,这类应用一般来说比较简单容易上手。我也打算开发一个,一来是练手,二来是写一个自己用的极简Todo类应用。 目前市面上的Todo类应用,一般来说,都比较复杂,太多我不需要的功能了,而且还有一些增值付费,对于我来说,根本没有那么多的复杂需求,只需要一个随手打开和关闭的记录而已,放在托盘上就非常的方便。 所以,需求如下: macOS托盘应用,随手打开和关闭; 带有分页标签,以便标记不同类型的todo; 最好有利用iCloud的数据云同步,方便未来与其他平台同步数据; -
MacOS SwiftUI托盘应用开发
最近想利用闲暇时间,做一些托盘工具类app的开发,主要是方便自己在Mac上的部分操作。在遇到各种问题后,总结了一下实现托盘SwiftUI应用的两种方式。 小声吐槽:swiftUI在macOS上的适配真的是很烂,相当多的组件可以说是不完善甚至是不可用的状态,似乎苹果也没有完善的意思,这已经是swift迭代到5.10了啊,竟然还有这么多问题存在。 -
MacOS项目引入c语言源码
在上一篇文章macOS项目中引入c静态库中,为阐述了如何在macOS项目中引入c语言的静态库,但是这样做有一个问题,就是静态库中的代码报错,会无法定义报错的位置,进而不利于排查问题。为了解决这个问题,我修改为源码引入c语言库。 很多教程中都提到,要引入c语言库的源码,需要将源码和头文件都拷贝到macOS项目的目录中,这样做,有一个弊病,就是对于需要引入c语言库的项目,通常都是想底层多平台支持,底层代码就需要独立于任何一个平台代码,如果要拷贝到macOS项目中,那后续修改和维护都会比较麻烦,实际上这是不需要的,接下来就阐述一下我这两天的实践。 -
macOS项目中引入c静态库
最近在写一款多平台的文件传输工具,Android平台已经写的差不多了,现在正在写macOS端,为了多端共享同一套底层协议代码,通讯协议部分,使用了c语言开发,对于Android通过jni调用c的相关代码,我已经驾轻就熟了,但是在macOS项目里,添加静态库并成功调试,我还是有一些懵逼。好在通过ChatGPT的各种帮助,还是跌跌撞撞的调通了。为了防止遗忘,记录一下过程。