
WWDC19 蘋(píng)果開(kāi)發(fā)者大會(huì)上,蘋(píng)果發(fā)布了針對(duì)iPad平臺(tái)的iPadOS系統(tǒng)。iPadOS是蘋(píng)果專門(mén)為iPad產(chǎn)品線量身打造的操作系統(tǒng),在iOS13的基礎(chǔ)上加入了專門(mén)為iPad優(yōu)化的操作以及專屬功能,iPadOS在很多地方都和macOS非常像,可以理解為輕量版macOS。
現(xiàn)在開(kāi)發(fā)者們可以利用蘋(píng)果提供的新工具包,只要對(duì) iPad 應(yīng)用的底層代碼做簡(jiǎn)單的調(diào)整,就能直接創(chuàng)建一個(gè)可以在 Mac 電腦上運(yùn)行的應(yīng)用。
蘋(píng)果的跨平臺(tái)計(jì)劃是如何實(shí)現(xiàn)的,傳送門(mén):將 iPad 應(yīng)用移植到 Mac 電腦上,蘋(píng)果的跨平臺(tái)計(jì)劃是如何實(shí)現(xiàn)的?
下面這篇文章介紹的是如何快速搭建工程,使用UIKit框架提供的控件搭建界面,并運(yùn)行在Mac電腦上。
準(zhǔn)備環(huán)境: macOS 10.15(Catalina)、Xcode 11。
創(chuàng)建工程
- 仍然選擇iOS平臺(tái)創(chuàng)建工程。

2.將TARGETS -> General下的Mac復(fù)選框選中,屏幕會(huì)彈框提示:Enable Mac support? 選擇Enable。運(yùn)行終端會(huì)默認(rèn)選擇到My Mac。(注意:選擇Mac復(fù)選框時(shí),iPad復(fù)選框一定是選中狀態(tài)。如果手動(dòng)取消iPad復(fù)選框,系統(tǒng)會(huì)同時(shí)取消Mac復(fù)選框)

3.創(chuàng)建Mac版本的唯一標(biāo)識(shí)(Mac-specific bundle ID )
如果是通過(guò)這種方式構(gòu)建Mac版本的iPad應(yīng)用程序并想上架Mac App Store,則Mac版本必須具有與iPad應(yīng)用程序不同的bundle ID和App Store Connect中的App記錄也會(huì)不同。如果有應(yīng)用內(nèi)購(gòu)買(mǎi)或訂閱,則需要在App Store Connect中為Mac版本重新創(chuàng)建它們(在App Store Connect幫助中創(chuàng)建“應(yīng)用內(nèi)購(gòu)買(mǎi)”和“創(chuàng)建可自動(dòng)更新的訂閱”)。
Mac App Store要求項(xiàng)目中的每個(gè)包都具有唯一的bundle ID,對(duì)于Mac版本,bundle ID帶有maccatalyst前綴,后跟iPad應(yīng)用bundle ID。相同的前綴已添加到iPad應(yīng)用程序擴(kuò)展名的Mac版本。

官方介紹說(shuō)可以改變Mac版本bundle ID的格式,不過(guò)具體如何配置描述的不太詳細(xì),望大神指點(diǎn):
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時(shí)選擇對(duì)應(yīng)的Platform和Embed.

5.添加控件,編寫(xiě)代碼。這里我就以經(jīng)典的UITableView控件為例,在storyboard中添加tableView,設(shè)置好約束、datasource、delegate。

運(yùn)行效果如下:

注意:由于Mac app界面尺寸可調(diào)節(jié),所以在用代碼創(chuàng)建控件的時(shí)候,用frame就不好使了,最好使用Masonry等方式設(shè)置約束。
求指正!求贊!求成長(zhǎng)!
相關(guān)鏈接: