源網(wǎng)頁(yè):macOS Development for Beginners: Part 1
你想學(xué)習(xí)如何開(kāi)發(fā)自己的macOS app嗎吮铭?
好消息蚪拦! Apple使macOS的開(kāi)發(fā)變非常簡(jiǎn)單非春,在本系列教程中遂跟,您將學(xué)習(xí)如何做。 您將學(xué)習(xí)如何為macOS創(chuàng)建第一個(gè)應(yīng)用程序-即使您是一個(gè)完整的初學(xué)者。
在第一部分中吹由,您將首先了解如何獲取為macOS開(kāi)發(fā)所需的工具。 然后盯腌,在創(chuàng)建一個(gè)簡(jiǎn)單的“ Hello溉知,World!”應(yīng)用程序時(shí)腕够,您將瀏覽Xcode级乍,探索如何運(yùn)行應(yīng)用程序,編輯代碼帚湘,設(shè)計(jì)UI和調(diào)試代碼玫荣。
在本系列的第2部分和第3部分中,您將創(chuàng)建一個(gè)更復(fù)雜的Egg Timer應(yīng)用程序大诸,并了解構(gòu)成macOS應(yīng)用程序的組件捅厂,從應(yīng)用程序的啟動(dòng)方式到構(gòu)建UI以及處理用戶交互的所有方式。
你還在等什么资柔? 桌面應(yīng)用程序的世界正等待著您焙贷!
注意:以下是有關(guān)從本系列文章開(kāi)始的一些指導(dǎo):如果您是Swift的新手,那么本系列假定您具有一些Swift知識(shí)贿堰,因此辙芍,請(qǐng)首先查看我們的Swift教程以獲取出色的介紹。如果您已經(jīng)有iOS經(jīng)驗(yàn)羹与,那么將對(duì)該系列的第一部分進(jìn)行回顧故硅。 快速瀏覽主題以確保確定,然后直接跳到本系列的下一部分纵搁。否則吃衅,請(qǐng)繼續(xù)閱讀。 本系列適用于初學(xué)者-無(wú)需具備針對(duì)iOS或macOS開(kāi)發(fā)的經(jīng)驗(yàn)腾誉!
入門
要成為macOS開(kāi)發(fā)人員徘层,您需要做兩件事:
運(yùn)行macOS Sierra的Mac:macOS操作系統(tǒng)僅在Apple計(jì)算機(jī)上運(yùn)行峻呕,??因此您既需要Mac也要開(kāi)發(fā)和運(yùn)行macOS應(yīng)用程序。
Xcode:這是用于創(chuàng)建macOS應(yīng)用程序的IDE惑灵。您將在本節(jié)的后面部分學(xué)習(xí)如何安裝它山上。
構(gòu)建完應(yīng)用程序后眼耀,如果要將其上傳到App Store進(jìn)行分發(fā)英支,則還需要為Apple開(kāi)發(fā)者帳戶付費(fèi)。但這不是必須的哮伟,除非您準(zhǔn)備將您的應(yīng)用程序發(fā)布到全世界干花,甚至在您希望通過(guò)Mac App Store分發(fā)時(shí)也是如此。如果您已經(jīng)擁有用于分發(fā)iOS應(yīng)用程序的開(kāi)發(fā)人員帳戶楞黄,那么您已經(jīng)準(zhǔn)備就緒-Apple已合并了開(kāi)發(fā)人員帳戶池凄,因此您只需要一個(gè)帳戶即可為任何Apple設(shè)備分發(fā)應(yīng)用程序。
與其他平臺(tái)不同鬼廓,為macOS開(kāi)發(fā)僅需安裝一個(gè)工具:Xcode肿仑。 Xcode是一個(gè)IDE(集成開(kāi)發(fā)環(huán)境),其中包括開(kāi)發(fā)macOS碎税,iOS尤慰,watchOS和tvOS應(yīng)用程序所需的一切。
如果您還沒(méi)有Xcode雷蹂,請(qǐng)單擊菜單左上方的Apple圖標(biāo)伟端,然后選擇App Store…以打開(kāi)Mac App Store。 即使Xcode是免費(fèi)的匪煌,您仍需要一個(gè)App Store帳戶才能下載Xcode责蝠。
搜索Xcode,然后單擊“安裝”按鈕開(kāi)始下載萎庭。 下載并安裝(可能要花一些時(shí)間-很大)之后霜医,從“應(yīng)用程序”文件夾中將其打開(kāi)。 首次運(yùn)行Xcode時(shí)驳规,以及每次重大更新后肴敛,它將要求您許可安裝其他組件。 輸入您的密碼达舒,并允許Xcode安裝這些組件值朋。
Hello World !
遵循學(xué)習(xí)新的編程語(yǔ)言或平臺(tái)的悠久傳統(tǒng)巩搏,您將首先創(chuàng)建一個(gè)Hello World昨登! 適用于macOS的應(yīng)用程序。
打開(kāi)Xcode(如果尚未運(yùn)行)贯底。 您應(yīng)該會(huì)看到一個(gè)歡迎界面-如果沒(méi)有看到丰辣,請(qǐng)從“窗口”菜單中選擇“welcome to Xcode”撒强。
單擊創(chuàng)建新的Xcode項(xiàng)目,然后在出現(xiàn)下一個(gè)對(duì)話框時(shí)笙什,從頂部的選項(xiàng)卡中選擇macOS飘哨。 從“應(yīng)用程序”部分中選擇“ Cocoa應(yīng)用程序”,然后單擊“下一步”琐凭。
為您的新應(yīng)用命名-HelloWorld-確保將語(yǔ)言設(shè)置為Swift芽隆,并選中“使用情節(jié)提要”。 取消選中所有其他選項(xiàng)统屈。
單擊下一步并創(chuàng)建以保存新的應(yīng)用程序項(xiàng)目胚吁。
運(yùn)行您的應(yīng)用
Xcode已使用所有必需的文件為您的應(yīng)用程序創(chuàng)建了基本模板。 此時(shí)運(yùn)行該應(yīng)用程序愁憔,看看你不費(fèi)吹灰之力就做出了什么腕扶。
單擊工具欄中的“播放”按鈕以運(yùn)行應(yīng)用程序或使用Command-R快捷方式。 Xcode現(xiàn)在將所有代碼編譯為機(jī)器代碼吨掌,捆綁應(yīng)用程序所需的資源半抱,然后執(zhí)行它。
注意:首次使用Xcode構(gòu)建和運(yùn)行應(yīng)用程序時(shí)膜宋,可能會(huì)詢問(wèn)您是否要在此Mac上啟用開(kāi)發(fā)人員模式窿侈。 您可以安全地選擇啟用,這時(shí)您可能需要輸入密碼激蹲。 開(kāi)發(fā)人員模式允許Xcode將調(diào)試器附加到正在運(yùn)行的進(jìn)程–這在構(gòu)建應(yīng)用程序時(shí)將非常有用棉磨!
現(xiàn)在,您應(yīng)該會(huì)看到一個(gè)空白窗口学辱,但不要失望-看看您已經(jīng)可以做什么:
但是現(xiàn)在是時(shí)候讓您的界面更加有趣了萨咕,因此退出應(yīng)用程序并返回Xcode统抬。
Xcode介面
Xcode將許多功能打包到一起,因此并非一次都能看到所有內(nèi)容危队。 要成為高效的Xcode用戶聪建,您需要知道一切都在哪里-以及如何實(shí)現(xiàn)。
在Xcode中打開(kāi)新項(xiàng)目時(shí)茫陆,將出現(xiàn)一個(gè)帶有工具欄和三個(gè)主面板的窗口金麸。
左側(cè)面板是“Navigator(導(dǎo)航器)”面板,頂部有8個(gè)顯示選項(xiàng)簿盅。 您將最常使用的一個(gè)是第一個(gè)-Project(工程)-它列出了項(xiàng)目中的所有文件挥下,并允許您單擊任意一個(gè)進(jìn)行編輯揍魂。
中間面板是“Editor(編輯器)”面板,它將顯示您從“Project Navigator(項(xiàng)目瀏覽器)”中選擇的任何內(nèi)容棚瘟。
右側(cè)面板是“Utilities(實(shí)用工具)”面板现斋,它會(huì)根據(jù)您在“Editor(編輯器)”面板中的顯示而變化。
添加UI
您可以使用Storyboard(情節(jié)提要)設(shè)計(jì)用戶界面偎蘸。 您的應(yīng)用程序已經(jīng)有一個(gè)Storyboard(情節(jié)提要)庄蹋,因此請(qǐng)轉(zhuǎn)到“Project Navigator(項(xiàng)目導(dǎo)航器)”并單擊Main.storyboard,以在“編輯器”面板中顯示它禀苦。
您的顯示發(fā)生了巨大變化蔓肯! 現(xiàn)在,在“編輯器”面板中振乏,您可以看到文檔大綱和UI的可視編輯器。
看一下您在可視化編輯器中可以看到的內(nèi)容秉扑。 有三個(gè)主要區(qū)域慧邮,每個(gè)區(qū)域在文檔大綱中都有一個(gè)文本表示形式:
在“實(shí)用工具”面板中果正,您將看到頂部帶有8個(gè)選項(xiàng)卡秦躯,底部的部分具有4個(gè)選項(xiàng)卡忆谓。
底部在可插入項(xiàng)目的各種內(nèi)容之間切換。 現(xiàn)在踱承,您要插入U(xiǎn)I元素倡缠,因此請(qǐng)選擇左側(cè)第三個(gè)Object library(對(duì)象庫(kù))。在底部的過(guò)濾器中茎活,鍵入“文本”以減少選擇的數(shù)量昙沦,然后將“文本字段”拖到View Controller場(chǎng)景中。在底部的過(guò)濾器中载荔,鍵入“文本”以減少選擇的數(shù)量盾饮,然后將Text Field(文本字段)拖到View Controller Scene(視圖控制器界面)中。
譯者注:新版本Xcode(如Xcode11)中不存在底部部分懒熙,而是將添加元件的移動(dòng)至右上角加號(hào)按鈕
現(xiàn)在過(guò)濾Push Button(按鈕)并將Push Button(按鈕)拖到View Controller Scene(視圖控制器界面)中丘损。 最后,添加Label(標(biāo)簽)工扎。
現(xiàn)在徘钥,使用Play(播放)按鈕或Command-R構(gòu)建并運(yùn)行該應(yīng)用程序。 您將看到這3個(gè)UI元素定庵。 嘗試在文本字段中輸入-它已經(jīng)支持所有標(biāo)準(zhǔn)的編輯快捷方式:復(fù)制吏饿,粘貼踪危,剪切,全選猪落,撤消贞远,重做等。 但是按鈕沒(méi)有任何作用笨忌,標(biāo)簽僅顯示“標(biāo)簽”蓝仲,因此現(xiàn)在該使事情更具交互性了。
配置UI
返回Main.storyboard并單擊按鈕將其選中官疲。 在右側(cè)的Utilities(實(shí)用工具)面板中袱结,確保顯示Attributes Inspector(“屬性”檢查器)-頂部的第4個(gè)(譯者注:Xcode11中是第五個(gè))按鈕。
將按鈕的標(biāo)題更改為“Say Hello”途凫。 該按鈕的寬度可能不足以顯示所有文本垢夹,因此請(qǐng)轉(zhuǎn)到Editor(編輯器)菜單并選擇Size to Fit Content(大小以適合內(nèi)容),這應(yīng)該可以解決該問(wèn)題维费。 (如果禁用了“適合內(nèi)容的大小”果元,請(qǐng)單擊某處以取消選擇該按鈕,然后重新選擇它并重試犀盟。)
現(xiàn)在單擊?text field?(文本字段)以將其選中而晒。 對(duì)于此應(yīng)用程序,用戶將在此處輸入其名稱阅畴,然后單擊按鈕倡怎,該應(yīng)用程序?qū)⒃跇?biāo)簽中顯示“ Hello name-goes-here!”贱枣。 為了幫助用戶监署,(你應(yīng)該)使用Attributes Inspector(”屬性“檢查器)在文本字段中添加一些占位符文本。
稍微擴(kuò)展文本字段以容納更長(zhǎng)的內(nèi)容冯事,然后將按鈕放在其右側(cè)焦匈。 在View Controller Scene中拖動(dòng)對(duì)象時(shí),會(huì)出現(xiàn)藍(lán)線昵仅,以幫助您對(duì)齊和定位對(duì)象缓熟,這項(xiàng)技術(shù)基于Apple的《人機(jī)界面指南》(?Apple’s Human Interface Guidelines)。
將標(biāo)簽放在文本字段和按鈕下方摔笤。 由于標(biāo)簽將很重要够滑,因此請(qǐng)使用更大的字體:選擇標(biāo)簽,然后在Attributes Inspector(“屬性”檢查器吕世,下略)中彰触,將字體更改為System Regular 30(系統(tǒng)常規(guī)30)。
將文字變成紅色使之更加顯眼如何命辖?
您無(wú)法確定用戶輸入名字的長(zhǎng)度况毅,因此請(qǐng)調(diào)整字段大小以適合該字體的高度并幾乎填滿窗口的寬度分蓖。
生成并運(yùn)行該應(yīng)用程序,以檢查您的UI更改是否已生效尔许。 對(duì)標(biāo)簽中的文本外觀滿意后么鹤,請(qǐng)刪除標(biāo)簽的標(biāo)題,以使標(biāo)簽開(kāi)始為空味廊。
將UI與代碼關(guān)聯(lián)
您的應(yīng)用仍然無(wú)法執(zhí)行您想要的操作蒸甜,但是要使其正常運(yùn)行,您需要開(kāi)始添加代碼余佛,并且該代碼必須能夠與UI進(jìn)行通信柠新。 要建立這些鏈接,您將使用Xcode的Assistant Editor(助手編輯器)辉巡。 在Main.storyboard可見(jiàn)的情況下恨憎,在Project Navigator(項(xiàng)目導(dǎo)航器)中單擊ViewController.swift。 這將創(chuàng)建另一個(gè)包含ViewController代碼的編輯器面板红氯。
根據(jù)顯示器的大小框咙,現(xiàn)在可能看起來(lái)有些局促,因此請(qǐng)使用工具欄中最右邊的按鈕隱藏實(shí)用程序痢甘。 如果您需要更多空間,請(qǐng)隱藏導(dǎo)航器茉贡。
選擇text field(文本字段)塞栅。 按住Control鍵,然后從文本字段拖動(dòng)到ViewController類定義的頂部腔丧。 放手放椰,在彈出的名稱框中輸入nameField,然后單擊“連接”愉粤。
對(duì)標(biāo)簽執(zhí)行相同操作砾医,將其命名為helloLabel。
查看Xcode生成的代碼衣厘,您會(huì)看到它們都標(biāo)記有@IBOutlet如蚜。 這是Interface Builder Outlet的縮寫,是您告訴情節(jié)提要編輯器這些對(duì)象名稱可用于鏈接到可視對(duì)象的方式影暴。
對(duì)于按鈕错邦,代碼不需要為其命名,但是需要知道用戶何時(shí)單擊按鈕型宙。 這要求使用@IBAction而不是@IBOutlet撬呢。
選擇按鈕,然后像以前一樣按住Control鍵并拖動(dòng)到ViewController.swift中妆兑。 這次魂拦,將Connection(連接)彈出窗口更改為Action(動(dòng)作)毛仪,并將名稱設(shè)置為sayButtonClicked。 這將創(chuàng)建單擊按鈕時(shí)將調(diào)用的函數(shù)芯勘。
現(xiàn)在一切就緒箱靴,可以編輯代碼。 使用右上角的X關(guān)閉助手編輯器借尿,然后切換到ViewController.swift刨晴。 如果您隱藏了導(dǎo)航器,請(qǐng)單擊右上角的切換按鈕路翻,或按Command-1直接跳至“項(xiàng)目導(dǎo)航器”狈癞。
在sayButtonClicked中輸入以下代碼:
var name = nameField.stringValue
if name.isEmpty {
name = "World"
}
let greeting = "Hello \(name)!"
helloLabel.stringValue = greeting
現(xiàn)在,ViewController.swift中的完整代碼如下所示(刪除頂部的常用版權(quán)聲明后)茂契。 行號(hào)旁邊的圓點(diǎn)表示與情節(jié)提要中的界面的連接蝶桶。
生成并運(yùn)行該應(yīng)用程序。
單擊不輸入任何內(nèi)容的“Say Hello”按鈕掉冶,您將看到“ Hello World真竖!”。 現(xiàn)在輸入您的姓名厌小,然后再次單擊按鈕以查看您自己的個(gè)人問(wèn)候恢共。
調(diào)試
有時(shí),我們程序員會(huì)犯錯(cuò)誤–難以置信璧亚,但相信我讨韭,它會(huì)發(fā)生。 而且癣蟋,當(dāng)需要這樣做時(shí)透硝,我們需要能夠調(diào)試我們的代碼。 Xcode允許我們?cè)谌魏吸c(diǎn)處停止代碼疯搅,并逐行逐步執(zhí)行濒生,檢查每個(gè)點(diǎn)處的變量值,以便我們可以發(fā)現(xiàn)錯(cuò)誤幔欧。
轉(zhuǎn)到ViewController.swift中的sayButtonClicked罪治,然后單擊var name = line旁邊的行號(hào)。 將會(huì)出現(xiàn)一個(gè)藍(lán)色的矩形琐馆。 這是一個(gè)活動(dòng)的斷點(diǎn)规阀,當(dāng)您單擊按鈕時(shí),調(diào)試器將在此處停止瘦麸。 再次單擊它谁撼,它將變成淺藍(lán)色。 現(xiàn)在它是一個(gè)無(wú)效的斷點(diǎn),不會(huì)停止代碼并啟動(dòng)調(diào)試器厉碟。 要完全刪除斷點(diǎn)喊巍,請(qǐng)將其拖出行號(hào)裝訂線。
再次添加斷點(diǎn)并運(yùn)行應(yīng)用程序箍鼓。 單擊說(shuō)你好按鈕崭参。 Xcode將位于最前面,突出顯示代碼的斷點(diǎn)行款咖。 在“編輯器”面板的底部何暮,現(xiàn)在將有兩個(gè)新的部分:Variables(變量)和 Console(控制臺(tái))。 “變量”部分顯示了此函數(shù)中使用的變量以及 self-這里即視圖控制器铐殃,和sender(發(fā)送者)-這里即按鈕海洼。