1. 程式人生 > >Swift3.0學習筆記-第一個app

Swift3.0學習筆記-第一個app

https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/index.html#//apple_ref/doc/uid/TP40015214-CH2-SW1

      按照蘋果官方文件的介紹一句句看下來了, 也實際用Xcode逐句編碼練習過了, 先贊一下作者寫的非常詳細, 但吐槽一下FoodTracker不是用Swift3.0寫的,開啟示例程式碼時要轉換為3.0。 說說感受,  Swift3.0畫介面比Android要麻煩, 難點在於佈局和程式碼要用Ctrl+滑鼠拖動的方式建立關聯(包括點選事件Action、控制元件引用Outlet)。 對於初學者, 即使給你一個Swift專案程式碼, 讓你照搬著寫也不一定能弄出相同功能;而Android app工程更容易理解和抄,門檻較低。

      蘋果的FoodTracker示例程式碼在開啟相簿時崩潰, 暫時不知道如何解決。

      Swift按照MVC模式設計UI框架。

Swift佈局檔案: 檔名字尾是storyboard, 功能類似於OC的xib, 實際上也是xml;一個storyboard檔案可以包含多個介面,之間用箭頭表示顯示層級關係, UIViewController之間使用segue互動資料。

UIView:控制元件,都繼承於UIView;

UIViewController: 都繼承於UIView Controller; 有點像Android的Activity/Fragment。

stack:storyboard裡stack的作用將一些控制元件組合到一起, 類似於Android的ViewGroup。

constraint:storyboard裡的constraint作用是設定控制元件的位置, 類似於Android的layout_margin。

控制元件和Controller之間通過outlet和action關聯, 按照Ctrl並拖動滑鼠從storyboard控制元件到controller程式碼裡,  outlet是控制元件的引用,類似於Android的findViewById;action是點選事件,類似於Android的OnClickListener。

     下面是關聯控制元件到程式碼的demo, 注意字首@IBOutlet是Xcode自動生成的,表示當前引數指向storyboard的控制元件, weak關鍵字表示弱引用,當iOS資源不足時可能會釋放該控制元件。

    @IBOutlet weak var nameTextField: UITextField!    //類似於Android的TextView,並執行了findViewById
    @IBOutlet weak var mealNameLabel: UILabel!
    @IBOutlet weak var photoImageView: UIImageView!
下面是新增點選事件的示例程式碼, 這是按住control鍵並用滑鼠拖動後生成的。
  @IBAction func setDefaultLabelText(_ sender: UIButton) {
        mealNameLabel.text = "Default Text"
    }

       上圖是UIViewController的生命週期, 類似於Android的Activity, 在Swift中每個介面都是用UIViewController的子類控制的。

  • viewDidLoad()— 執行的第一個函式(類似於Android Activit的onCreate,區別是viewDidLoad可以執行多次), 當View對應的storyboard檔案被載入並作為檢視根節點顯示時呼叫。

  • viewWillAppear()— 顧名思義,View顯示出來前肯定要執行的函式,類似於Swift觀察屬性變化的willSet。英語語法裡的將來時大笑

    viewDidAppear() - view顯示完成後執行的函式, 類似於Swift觀察屬性變化的didSet, 英語語法的完成時。

在Android的介面裡經常使用列表控制元件ListView或者RecyclerView, Swift使用UITableViewController作為列表控制元件管理類, 注意在storyboard檔案裡時UITableViewController,而不是UITableView。

       我們在考察一個Android工程師功底時,經常問到ListView的優化;同理,要學好Swift必須搞明白UITablerViewController的所有細節, 還是看一遍API並執行看看效果吧!

storyboard裡的標題欄是用Xcode的Editor選單裡的Navigation Controller選項新增的, 而不是用右下角的Object library拖出來的。

      Swift3.0 APP官方開發資料較少,畢竟Swift3.0剛釋出2個月, 國內的相關視訊都是培訓班的。  要學好Swift,建議看完所有的蘋果官方WWDC視訊和介紹。