使用iOS UIKit框架,快速开发macOS桌面端应用
WWDC19 苹果开发者大会上,苹果发布了针对iPad平台的iPadOS系统。iPadOS是苹果专门为iPad产品线量身打造的操作系统,在iOS13的基础上加入了专门为iPad优化的操作以及专属功能,iPadOS在很多地方都和macOS非常像,可以理解为轻量版macOS。
现在开发者们可以利用苹果提供的新工具包,只要对 iPad 应用的底层代码做简单的调整,就能直接创建一个可以在 Mac 电脑上运行的应用。
苹果的跨平台计划是如何实现的,传送门:将 iPad 应用移植到 Mac 电脑上,苹果的跨平台计划是如何实现的?
下面这篇文章介绍的是如何快速搭建工程,使用UIKit框架提供的控件搭建界面,并运行在Mac电脑上。
准备环境: macOS 10.15(Catalina)、Xcode 11。
创建工程
- 仍然选择iOS平台创建工程。
2.将TARGETS -> General下的Mac复选框选中,屏幕会弹框提示:Enable Mac support? 选择Enable。运行终端会默认选择到My Mac。(注意:选择Mac复选框时,iPad复选框一定是选中状态。如果手动取消iPad复选框,系统会同时取消Mac复选框)
3.创建Mac版本的唯一标识(Mac-specific bundle ID )
如果是通过这种方式构建Mac版本的iPad应用程序并想上架Mac App Store,则Mac版本必须具有与iPad应用程序不同的bundle ID和App Store Connect中的App记录也会不同。如果有应用内购买或订阅,则需要在App Store Connect中为Mac版本重新创建它们(在App Store Connect帮助中创建“应用内购买”和“创建可自动更新的订阅”)。
Mac App Store要求项目中的每个包都具有唯一的bundle ID,对于Mac版本,bundle ID带有maccatalyst前缀,后跟iPad应用bundle ID。相同的前缀已添加到iPad应用程序扩展名的Mac版本。
官方介绍说可以改变Mac版本bundle ID的格式,不过具体如何配置描述的不太详细,望大神指点:
You can change the Mac version bundle ID format but then you need manually sign the app. Set the
Derive Mac Catalyst Product Bundle Identifier (DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER)
build setting toNO
, add a macOS conditional value for Product Bundle Identifier (PRODUCT_BUNDLE_IDENTIFIER)and Provisioning Profile (PROVISIONING_PROFILE_SPECIFIER), then manually sign the app.
4.添加framework和library时选择对应的Platform和Embed.
5.添加控件,编写代码。这里我就以经典的UITableView控件为例,在storyboard中添加tableView,设置好约束、datasource、delegate。
运行效果如下:
注意:由于Mac app界面尺寸可调节,所以在用代码创建控件的时候,用frame就不好使了,最好使用Masonry等方式设置约束。
求指正!求赞!求成长!
相关链接: