我的第一個iOS項目(Swift版)

題記:對于一個2013年開始iOS的老iOSer渠抹,現(xiàn)在開始寫這樣的文章,我已經(jīng)無力吐槽自己了闪萄。休假三年梧却,也忘記的差不多了,慢慢撿的時候败去,也寫些基礎(chǔ)放航,作為筆記吧。
創(chuàng)建時間: 2020年3月23日
系統(tǒng)環(huán)境:macOS Mojave (v10.14.6)
Xcode:V 11.3 beta
準(zhǔn)備:你需要有一臺Mac OS系統(tǒng)的電腦圆裕。在剛?cè)腴T的時候广鳍,公司比較困難荆几,所以用的黑蘋果,就是window上裝的Mac OS系統(tǒng)赊时。這有個弊端吨铸,本身Xcode就不大穩(wěn)定,再配上不穩(wěn)定的黑蘋果祖秒,對于剛?cè)腴T的孩子诞吱,運氣不好的話,絕對是打擊竭缝。因為房维,即便你代碼寫對了,也可能出現(xiàn)其他奇葩的問題歌馍。所以握巢,既然決定入門晕鹊,就準(zhǔn)備一臺蘋果電腦吧松却。致于蘋果手機,可以暫時不需要的溅话。

開發(fā)工具:Xcode
一定一定要從App Store下載晓锻。記得當(dāng)時,某知名企業(yè)飞几,員工不知道從哪下載的Xcode砚哆,開發(fā)的App直接被植入木馬了......

一.創(chuàng)建一個新項目

我們直接用圖,更直觀的表述操作流程:
點擊紅色框屑墨,創(chuàng)建新項目躁锁。如果,你只是想進行swift語法的學(xué)習(xí)卵史,那么你可以選第一項【Get started with a playground】战转。粉色框里,一般會顯示你最近打開過的項目以躯。


STEP 1

如果要創(chuàng)建手機項目槐秧,默認(rèn)選iOS就好。普通的手機項目忧设,我們一般直接用默認(rèn)的Single View App刁标。點擊【Next】。


STEP 2

Product Name是你項目的名稱址晕,一定要第一次就寫好了膀懈。后期雖然可以改,但是修改的過程中谨垃,如果落掉某項吏砂,會導(dǎo)致整個項目癱瘓撵儿,所以不建議你中途修改項目名稱。
Team狐血,可以不填淀歇。如果你需要真機測試,就要填上你對應(yīng)開發(fā)者賬戶的Team名稱匈织。這個你可以搜一下浪默,“iOS 真機測試”,我相信會有很多文章告訴你如何操作缀匕。
Organization Name,你可以填上你所屬公司的名字纳决,要英文哦。當(dāng)然乡小,如果你只是個學(xué)生阔加,你可以填上自己的名字。這個后期都很容易修改满钟,貌似是在App Store上會顯示的胜榔,具體記不住了。不過湃番,初學(xué)者夭织,不用糾結(jié),隨便填吠撮。
Origanization Identifier,這個是必須填的尊惰,一般是www.baidu.com這種形式的,拼接項目名稱泥兰,會成為App的ID弄屡,且是唯一標(biāo)識。為了不與他人重復(fù)鞋诗,你要寫公司的網(wǎng)址或者你自己起個比較個性的膀捷,都無所謂,后期也是可以修改的师脂。
Language,有Swift和Objective-C兩種担孔,這里默認(rèn)為Swift,所以不用選了吃警。
其余的選項糕篇,暫時先不選了,點擊【Next】酌心,選擇你的workspace拌消,就是你想把這個工程放到哪里。

STEP 3

現(xiàn)在,你已經(jīng)成功創(chuàng)建了項目墩崩。在某個版本之前氓英,啟動文件是AppDelegate.swift,是沒有SceneDelegate.swift這個文件的鹦筹,它是為了讓iPad支持多窗口的結(jié)果铝阐。對于手機App,你可以將其直接刪除铐拐。不過徘键,刪除后,要做一些改動遍蟋。

項目文件夾

好了吹害,上圖,藍色框是模擬器虚青,綠色框是Run按鈕它呀,點擊【Run】,會啟動模擬器棒厘,啟動模擬器是一件相當(dāng)耗內(nèi)存的事情纵穿,也很考量電腦性能。筆者目前電腦是Imac的頂配绊谭,運行模擬器的時候政恍,依然會聽見風(fēng)轉(zhuǎn)呼呼轉(zhuǎn)的聲音汪拥。
運行后达传,界面是一個白板。接下來迫筑,我們簡單的配置一下宪赶,然后很俗氣的讓畫面顯示Hello world!

二.簡單的配置

這里脯燃,有很多分支搂妻。
首先,你是否想要支持多窗口辕棚?這里我們選擇不支持欲主。
你是否需要storyboard呢?還是想純手工代碼逝嚎?storyboard開發(fā)速度較快扁瓢,是可視化的布局,純手工代碼补君,因為自適應(yīng)的約束條件的加入引几,寫起來要比以前麻煩多了,但是純手工代碼有一個好處挽铁,就是遷移起來比較容易伟桅,代碼也容易復(fù)用敞掘。
筆者,寫這篇文的時候楣铁,是想用自己熟悉的Xcode玖雁,處理下DB文件,打印出其他項目需要的Enum類型盖腕。初學(xué)者茄菊,其實建議你用storyboard,通過可視化赊堪,了解下約束條件面殖,再寫純代碼的時候,會更容易理解哭廉。

好了脊僚,我們來刪掉SceneDelegate.swift這個文件。
Step1: 刪除項目info.plist文件中的Application Scene Manifest的配置數(shù)據(jù)

點擊選中那一行的減號即可刪除

Step2: 刪除AppDelegate中關(guān)于Scene的代理方法
AppDelegate.swift文件中遵绰,有個“ // MARK: UISceneSession Lifecycle”辽幌,它下面的兩個方法就是Scene的代理方法,都刪除椿访。
Step3: 刪除SceneDelegate的類(不刪也可以)
Step4: 如果使用storyboard乌企,則需要在AppDelegate.swift中添加window屬性,否則會黑屏成玫,如下:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow? //這一行是我們自己加上的

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

......省略

之后加酵,我們來設(shè)置一下啟動的storyboard,即Main.storyboard哭当。這個是否可以換成別的呢猪腕?當(dāng)然可以,只要配置一下就好钦勘,之后我會抽時間陋葡,單獨做一篇關(guān)于Xcode配置的文章,不過彻采,估計這是一個很久遠的事情腐缤,不如我們需要什么,就查什么肛响。
按照下圖岭粤,我們設(shè)置下背景顏色,紅色框终惑,就是設(shè)置的地方绍在。可能初學(xué)者,發(fā)現(xiàn)自己的右側(cè)邊欄偿渡,怎么跟我的截圖不一樣呢臼寄?那么,請你從左至右溜宽,仔細查看吉拳,我每一欄都選中了什么。


Main.storyboard

藍色按鈕是STOP按鈕适揉,我們先STOP留攒,再Run一下。好了嫉嘀,你會看到你的模擬器界面背景顏色變成你設(shè)置的顏色了炼邀。

三.顯示Hello World

如果,你仔細觀察上圖剪侮,你會發(fā)現(xiàn)第二欄里拭宁,寫著的是【View Controller Scene】,沒錯瓣俯,這個就是鏈接了ViewController.swift文件杰标。我們可以實驗一下,在ViewController.swift中彩匕,加入設(shè)置背景顏色的代碼以及Hellow world的文本:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        self.view.backgroundColor = UIColor.red //設(shè)置背景顏色
        //顯示Hellow world
        let label = UILabel.init(frame: CGRect.init(origin: CGPoint.init(x: 150, y: 280), size: CGSize.init(width: 200, height: 50)))
        label.text = "Hellow world!"
        self.view.addSubview(label)
    }
}

然后腔剂,再運行一次模擬器,界面變成了紅色驼仪,并且顯示了Hellow world掸犬。
我們可以看到,代碼里設(shè)置背景顏色谅畅,會高于storyboard里的登渣。但是噪服,在實際開發(fā)中毡泻,不要做這種矛盾的設(shè)置。
另外粘优,label是用frame來確定位置的仇味,但是,通常開發(fā)中雹顺,用的是約束條件來確定位置丹墨,這樣,可以更好的適應(yīng)不同尺寸的屏幕嬉愧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贩挣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌王财,老刑警劉巖卵迂,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绒净,居然都是意外死亡见咒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門挂疆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來改览,“玉大人,你說我怎么就攤上這事缤言”Φ保” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵胆萧,是天一觀的道長今妄。 經(jīng)常有香客問我,道長鸳碧,這世上最難降的妖魔是什么盾鳞? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮瞻离,結(jié)果婚禮上腾仅,老公的妹妹穿的比我還像新娘。我一直安慰自己套利,他們只是感情好推励,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肉迫,像睡著了一般验辞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喊衫,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天跌造,我揣著相機與錄音,去河邊找鬼族购。 笑死壳贪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寝杖。 我是一名探鬼主播违施,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瑟幕!你這毒婦竟也來了磕蒲?” 一聲冷哼從身側(cè)響起留潦,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辣往,沒想到半個月后愤兵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡排吴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年秆乳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钻哩。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡屹堰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出街氢,到底是詐尸還是另有隱情扯键,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布珊肃,位于F島的核電站荣刑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伦乔。R本人自食惡果不足惜厉亏,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烈和。 院中可真熱鬧爱只,春花似錦、人聲如沸招刹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疯暑。三九已至训柴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妇拯,已是汗流浹背幻馁。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乖阵,地道東北人宣赔。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像瞪浸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吏祸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容