# MacCatalystUse **Repository Path**: xiaoyigegespec/mac-catalyst-use ## Basic Information - **Project Name**: MacCatalystUse - **Description**: MacCatalyst 的冷门使用方法 - **Primary Language**: Swift - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
Mac Catalyst 项目调用和屏保功能
[TOC] # Mac Catalyst中使用 AppKit框架 > UIKit是用来开发iOS的应用的,AppKit是用来开发Mac应用的。 > >UIKit和AppKit都有一个Application类,每个应用都只创建一个Application对象,分别是UIAplication和NSApplication的实例 这种情况下就需要有一个动态的映射转换工具(Dynamic)了: [https://github.com/mhdhejazi/Dynamic](https://github.com/mhdhejazi/Dynamic) ![](https://tva1.sinaimg.cn/large/0081Kckwgy1gl3vcazuzvj306x0360su.jpg) ## 转化为 mac 的 window ```swift extension UIWindow { var nsWindow: NSObject? { var nsWindow = Dynamic.NSApplication.sharedApplication.delegate.hostWindowForUIWindow(self) if #available(macOS 11, *) { nsWindow = nsWindow.attachedWindow } return nsWindow.asObject } } ``` ## 单独使用 ```swift let app = Dynamic.NSApplication.sharedApplication() // Swift: let formatter = Dynamic.NSDateFormatter() // Getting the property value: let format = formatter.dateFormat // `format` is now a Dynamic object // Setting the property value: formatter.dateFormat = "yyyy-MM-dd" // Or the longer version: formatter.dateFormat = NSString("yyyy-MM-dd") ``` *********** # 使用linux 操作命令 ## 定义脚本方法 ```swift @discardableResult func shell(_ args: [String]) -> String { let task = Dynamic.NSTask() //Process() task.launchPath = "/usr/bin/env" task.arguments = args let pipe = Pipe() task.standardOutput = pipe task.launch() task.waitUntilExit() let data = pipe.fileHandleForReading.readDataToEndOfFile() let output: String = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String return output; } ``` ## 使用命令 ```swift // 以空格来区分参数,依次填写 // print(shell(["ls", "-al"])) shell(["open", saverPath]) //saverPath是文件的具体路径 ``` **************** # Mac屏保 >Mac Catalyst项目不能制作屏保程序,会报:'ScreenSaverView' is unavailable: not available on macCatalyst 的错误 >要用原生的 Mac 开发才可以 ([原生Mac参考示例](https://github.com/wangweicheng7/Sundial)) 把屏保程序包放在项目里面 ![添加屏保程序包](https://tva1.sinaimg.cn/large/0081Kckwgy1gl3w5w854sj306502hjrc.jpg) ```swift // 获取屏保程序资源 guard let path = Bundle.main.path(forResource: "MySaver",ofType:"saver") else { print("Unable to locate BuildScript.command") return } // 脚本运行安装 shell(["open", path]) ``` [代码地址](https://gitee.com/xiaoyigegespec/mac-catalyst-use)