iOS系列 基礎篇 01 構建HelloWorld,剖析並真機測試

来源:http://www.cnblogs.com/LonelyShadow/archive/2016/08/28/5814017.html
-Advertisement-
Play Games

使用Xcode創建一個傳說中的HelloWorld,剖析項目組成並真機測試。 ...


iOS基礎 01 構建HelloWorld,剖析並真機測試

 

前言:

  從控制台輸出HelloWorld是我們學習各種語言的第一步,也是我們人生中非常重要的一步。

  多年之後,我希望我們仍能懷有學習上進的心情,繼續以HelloWorld去認識這世界上更多的東西。

 

  本篇以HelloWorld作為切入點,向大家系統介紹什麼事iOS應用以及如何使用Xcode創建iOS應用。

 

目錄:

  1. 創建HelloWorld工程

  1.1. 設計界面

  1.2. 真機測試

  2. Xcode中的iOS工程模板

  2.1. Application類型

  2.2. Framework&Library類型

  2.3. Other類型

  3. 應用剖析

  4. 最後再扯個犢子

 

 

 

1. 創建HelloWorld工程

  啟動Xcode,然後點擊File-New-Project菜單,或直接點擊“Create a new Xcode project”:

 

  在打開的Choose a template for your new project界面中選擇Single View Application工程模板:

 

  接著點擊Next按鈕,然後提示輸入項目名稱等信息:

 

  這裡我們可以按照上圖並結合自己的實際情況和需要輸入相關內容。

  下麵簡要介紹一下上圖中各個選項:

選項 說明
Project Name 工程項目的名稱。
Organization Name 公司或組織的名稱。
Organization Identifier

公司或組織的標識(很重要)。

一般情況下,這裡輸入的是公司或組織的功能變數名稱(如com.geeksss)。寫法類似於Java中的包名。

Bundle Identifier

捆綁標識符(很重要)。該標識符由Project Name+Organization Identifier構成。

因為在App Store上發佈應用時會用到它,所以它的命名不可重覆。

Language

開發語言選擇。

這裡可以選擇開發應用所使用哦的語言,Xcode 6中可以選擇Swift和Objective-C。

Devices

選擇設備。可以構建基於iPhone或iPad的工程,也可以構建通用工程。

通用工程是指一個工程在iPhone和iPad上都可以正常運行。

 

  設置完相關的工程選項後,點擊Next按鈕,根據提示選擇存放項目文件的位置:

 

  選擇完存放路徑之後,點擊Create按鈕,項目就創建完畢了。
  在項目資源列表中選擇Main.storyboard,即可在編輯區中打開對應的設計器:

 

  在右下角的對象庫中選擇Label,將其拖拽到View設計界面上並調整其位置。

  雙擊Label,使其處於編輯狀態(也可以通過控制項的屬性來設置),在其中輸入HelloWorld:

 

  添加Label控制項後,需要設置Label控制項的位置。

  拖拽Label控制項,此時會出現藍色的虛線,說明該Label現在處於水平居中位置:

 

  但是如果現在運行該實例,我們會發現Label並非居中,還需要為Label添加Auto Layout約束。

  關於Auto Layout約束相關的內容,等後續再專門兒介紹吧。

 

  我們選擇工具欄中的Resolve Auto Layout Issues(解決Auto Layout問題)按鈕,在彈出的菜單中選擇Add Missing Constrains(添加缺少約束):

 

  添加完成後,Label控制項的上面和下麵會出現兩條藍色豎線:

 

  至此,整個工程創建完畢。

 

  如圖,選擇運行的模擬器或設備,然後點擊左上角的運行按鈕,即可看到運行結果:

 

  點擊運行後,如果是真機測試,第一次會提示輸入您的Apple ID帳號,輸入即可。完事兒就會在手機桌面上看到您的應用:

 

  但是當我們打開時,提示該應用來自不受信任的開發者,打開受限。

  畢竟我也沒有購買開發者證書。。呵呵:

 

  這裡我們按照提示,找到設置:

 

  通用:

 

  設備管理:

 

  在開發商列表中選擇你剛剛在Xcode中輸入的那個帳號:

 

  然後會看到該帳號所有應用的列表,點擊信任該開發者:

 

  然後會有一個提示,確定要信任這家伙嗎?確定即可:

 

  然後我們會看到咱的應用已經通過驗證了:

 

  重新回到桌面,點擊啟動應用,OK,激動的一個界面映入眼帘:

 

  雖然界面很磕砷,並不高大上吧。但是我們在沒有輸入任何代碼的情況下,就已經利用Xcode工具的Single View Application模板創建了一個工程,併成功運行。

  Xcode之強大可見一斑。

 

 

 

2. Xcode中的iOS工程模板

  剛剛我們創建項目的時候可以看到,iOS工程模板大概分為3類:Application、Framework&Library和Other。

  下麵將分別介紹這三類模板:

2.1. Application類型

  我們大部分的開發工作都是從使用Application類型模板創建iOS程式開始的。該類型共包含5個模板,具體如下:

模板名稱 模板介紹
Master-Detail Application 可以構建樹形結構導航模式應用,生成的代碼包含了導航控制器和表視圖控制器等。
Game 可以構建基於iOS的游戲應用。
Page-Based Application 可以構建類似於電子書效果的應用,這是一種平鋪導航。
Single View Application 可以構建簡單的單個視圖應用。
Tabved Application 可以構建標簽導航模式的應用,生成的代碼包含了標簽控制器和標簽欄等。

 

 

 

2.2. Framework&Library類型

  Famework&Library類型的模板如圖,它可以構建基於Cocoa Touch Framework和Cocoa Touch Static Library的應用:

 

  Cocoa Touch Framework可以讓開發者自定義應用於UIKit的框架,而Cocoa Touch Static Library可以讓開發者創建基於Framework框架的靜態庫。

  由於代碼安全和多個工程重用代碼的考慮,我們可以將一些類或者函數編寫成靜態庫。

  靜態庫不能獨立運行,編譯成功時會生成名為libXXX.a的文件(例如libHelloWorld.a)。

 

 

 

2.3. Other類型

  利用該類型,我們可以構建應用內購買內容包(In-App Purchase Content)和空工程。

  如圖,使用應用內購買內容包,可以幫助我們構建具有內置收費功能的應用:

 

  我們可以根據需要選用不同的工程模板,這可以大大減少工作量。

 

 

 

3. 應用剖析

  在創建HelloWorld的過程中,生成了很多文件(展開Xcode左邊的項目導航視圖可以看到),如圖:

 

  導航視圖下有HelloWorld、HelloWorldTests、HelloWorldUITests和Products四個組。

  其中HelloWorld組中放置的是HelloWorld項目工程的重要代碼,而HelloWorldTests組中放置的是HelloWorld程式的單元測試代碼,HelloWorldUITest組中放置的是自動測試UI與交互的測試代碼,Products組中放置的是編譯之後的工程文件。

 

  下麵,咱們重點介紹一下HelloWorld組中的項目內容。

 

  在HelloWorld組中,有兩個類AppDelegate和ViewController,兩個界面佈局文件Main.storyboard和LaunchScreen.xib,以及一個組Supporting Files。

  Main.storyboard文件是故事板文件(下篇重點介紹),LaunchScreen.xib是應用啟動界面的xib文件。故事板文件和xib文件比較類似。

 

  我們主要的編碼工作就是在AppDelegate和ViewController這兩個類中進行的,它們的類圖如圖所示:

 

  AppDelegate是應用委托對象,它繼承了UIResponder類,並實現了UIApplicationDelegate委托協議。

  UIResponder類可以使子類AppDelegate具有處理相應事件的能力,而UIApplicationDelegate委托協議使AppDelegate能夠成為應用程式委托對象,這種對象能夠響應應用程式的生命周期。

  相應地,AppDelegate的子類也可以實現這兩個功能。

 

  ViewController類繼承自UIViewController類,它是視圖的控制器類,在工程中扮演著根視圖和用戶事件控制器類的角色。

 

  AppDelegate類是應用程式委托對象,這個類中繼承的一系列方法在應用生命周期的不同階段會被回調,其定義如下:

 

  啟動HelloWorld時,首先會調用上圖畫圈的application:didFinishLaunchingWithOptions方法,其它方法我們後續再詳細介紹。

 

  在項目導航視圖中,我們可以看到還有Images.xcassets文件,它可以放置工程的圖片。

  Supporting Files組只有一個Info.plist文件,該文件是工程屬性描述文件,其中保存著工程的屬性設置。

  Products組是工程要生車功能的產品包。

 

說明:

  在訪問資源文件時,文件夾和組是有區別的,文件夾中的資源在訪問時是需要將文件夾作為路徑的。

  如果icon.png文件放在image文件夾下,則訪問它的路徑是“image/icon.png”;如果image是組,則訪問它的路徑是“icon.png”。

 

 

 

4. 最後再扯個犢子

  沒有結尾總覺得不好看。。。

 

  如果本文對您有幫助,不要忘記戳一下右下角的大拇指哦,呵呵。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 或者 ...
  • 本篇主要探討的是iOS應用中各種狀態的躍遷過程,建議大家通過修改AppDelegate.swift,在每個過程中添加日誌輸出代碼,從而觀察其變化。 ...
  • 一、PackageManager的resolveActivity 返回能夠匹配的Intent,如果不能匹配就返回NULL, 二、PackageManager的queryIntentActivities 返回所有成功匹配的Activity信息 三、Intent的resolveActivity 第一個參 ...
  • Android 事件分發機制 ViewGroup dispatchTouchEvent 返回true ViewGroup自己在dispatchTouchEvent中消費這個事件 dispatchTouchEvent 返回false 回傳到Activity中onTouchEvent消費事件 dispa ...
  • 我們在《Android學習之Handler消息傳遞機制》(http://www.cnblogs.com/zhouhb/p/5812447.html)已提到過,Android只允許UI線程修改Activity里的UI組件,這樣會導致新啟動的線程無法動態改變界面組件的屬性值。為瞭解決新線程不能更新UI組 ...
  • 這裡用了 MainActivity佈局 主要代碼 源碼: https://github.com/ln0491/RadioButtonAndFragment ...
  • Swift - 從字典(或者Alamofire)直接創建Model文件的工具 效果 1. 常規生成model的方式 2. 通過debug創建model的方式 特性 1. 可以處理JSON格式的字典數據 2. 可以處理本地的json數據 3. 可以處理Alamofire生成的json格式返回數據 4. ...
  • 以下內容是分析安卓源碼所得: 1: 使用預設樣式創建View的方式, 源碼文件 Button.Java 註:此文參考http://www.linzenews.com/ 中的內容所寫,如侵刪! 2: 需要聲明預設樣式的屬性, 源碼文件 attrs.xml 3:創建預設樣式, 源碼文件 styles.x ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...