小波說 Swift iOS11-圖文速記

iOS 11 開發(fā)第一季 入門篇
視頻教程地址:http://www.xiaoboswift.com/course/89

入門篇

  • 開發(fā)環(huán)境配置
  • 第一個 APP
  • Swift 和 playground
  • 創(chuàng)建用戶交互

前2章節(jié)主要是聊聊天。說明下學(xué)習(xí) iOS 開發(fā)需要買 Mac 電腦最省心。

Xcode 在 APP store上免費下載。
最終上架 Appstore 需要購買 Apple Developer 帳號:688/年。

第3章通過實例演示 playground

//: Playground - noun: a place where people can play

import UIKit


let 矩形 = CGRect(x: 10, y: 10, width: 375, height: 44)
let 訂購按鈕 = UILabel(frame: 矩形)

訂購按鈕.text = "立即訂購"
訂購按鈕.textColor = UIColor.white
訂購按鈕.backgroundColor = UIColor.orange
訂購按鈕.textAlignment = .center
訂購按鈕.layer.cornerRadius = 4
訂購按鈕.clipsToBounds = true

Screen Shot 2018-02-06 at 18.58.26.png

第4章

通過創(chuàng)建第一個 Hello world 項目:
熟悉 Xcode 創(chuàng)建新項目
了解 Xcode 軟件界面
在界面中新增一個 button 按鈕
了解基本的元素在界面中的約束,通過可視化的方式來設(shè)定和更改
通過 control+拖動的方式,把 interface builder 中的元素和 View Controller代碼進(jìn)行綁定。從而可以實現(xiàn) 對應(yīng) 的Action

Screen Shot 2018-02-07 at 17.46.49.png

初級篇

第1章: Auto Layout

約束方式:對齊約束和距離約束
safe area

第2章: Stack View

以T恤貨架展示,利用 stack view 組織元素,減少設(shè)置約束。
Stack View可以水平、垂直顯示
簡單的來說,就是類似于 sketch 或者 keynote 中的 group,把零散的元素組合成一個 group,對 group 進(jìn)行整體設(shè)置約束方式。
stack view 本身也提供了對齊、組內(nèi)元素分布方式、間距等簡單的屬性調(diào)節(jié)
想使用stack view,有2種方式:

  1. 直接拖動stack view組件
  2. 把視圖中的多個組件選中后,點擊 emable stack view圖標(biāo)(interface building 右下角,設(shè)置約束的 icon 處)

最后介紹了下,相對約束。Stack View 和父視圖的 safe area 等寬。

Screen Shot 2018-02-09 at 16.33.47.png

第3章: Size Class

對Size Class的 whRC(寬、高、標(biāo)準(zhǔn)、緊湊)進(jìn)行了介紹。
主要是針對 iPad 和 iPhone ;以及橫豎屏的適配。
增加的變體來進(jìn)行設(shè)置不同的屬性值。

第4章: Table View

通過利用Table View自帶的 style(basic),實現(xiàn)重用和數(shù)據(jù)顯示綁定

  1. 拖一個Table View,設(shè)置Table View的約束為上下左右0
  2. 設(shè)置Table View為動態(tài),prototype 為1
  3. 設(shè)置Table View cell的 style 為 basic,identifier為 ReuseCell
  4. 設(shè)置 cell 的 image
  5. 增加ViewController的UITableViewDataSource,有2個方法需要實現(xiàn)numberOfRowsInSection、cellForRowAt indexPath
  6. 設(shè)置 mock 數(shù)據(jù),為數(shù)組
  7. 關(guān)聯(lián)數(shù)據(jù)和 cell 的關(guān)系。Control 拖動 Tableview 到view Controller。為datasource。
//
//  ViewController.swift
//  TableView
//
//  Created by Yang Peiyuan on 11/02/2018.
//  Copyright ? 2018 Yang Peiyuan. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UITableViewDataSource{
    var weapons = ["手槍:手槍是一種單手握持瞄準(zhǔn)射擊或本能射擊的短槍管武器,通常為指揮員和特種兵隨身攜帶,用在50米近程內(nèi)自衛(wèi)和突然襲擊敵人?,F(xiàn)代手槍的基本特點是:變換保險、槍彈上膛、更換彈匣...","氣槍","機槍","沖鋒槍","榴彈槍","狙擊槍","平底鍋","qqqq","手槍","氣槍","機槍","沖鋒槍","榴彈槍","狙擊槍","平底鍋","qqqq"]
    var images = ["手槍","氣槍","機槍","沖鋒槍","榴彈槍","狙擊槍","平底鍋","qqqq","手槍","氣槍","機槍","沖鋒槍","榴彈槍","狙擊槍","平底鍋","qqqq"]
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return weapons.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier:"ReuseCell", for: indexPath)
        cell.textLabel?.text = weapons[indexPath.row]
        
        return cell
    }
    

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}


Simulator Screen Shot - iPhone X - 2018-02-11 at 13.02.40.png

第5章: 自定義單元格

UITableViewController

準(zhǔn)備工作

  • 創(chuàng)建新工程
  • 拖動TableViewController
  • 創(chuàng)建新的 weaponsController class,繼承于TableViewController
  • 綁定TableViewController和新的 weaponsController class
  • 拖動程序起點到新拖動的 TableViewController 上
  • 刪除默認(rèn)的ViewController視圖和 class
  • 準(zhǔn)備數(shù)據(jù)和圖片

var weapons = ["手槍","機槍","沖鋒槍","來福槍","榴彈槍","平底鍋","gogogo","手槍","機槍","沖鋒槍","來福槍","榴彈槍","平底鍋","gogogo"]

var weaponTypes = ["A","B","C","D","E","F","G","A","B","C","D","E","F","G"]

var origins = ["中國","美國","英國","法國","俄羅斯","意大利","以色列","中國","美國","英國","法國","俄羅斯","意大利","以色列"]

var weaponImages = ["1","2","3","4","1","2","3","1","2","3","4","1","2","3"]

自定義Cell 樣式

  • 設(shè)置TableView 和 Cell 的高度為500
  • 拖動空的 view 到 cell,設(shè)置約束上下左右20
  • 拖動 image view,約束充滿整個屏幕。填充模式 aspect fill
  • 拖動 Visual effect view,模糊背景標(biāo)題欄。設(shè)置約束 0 0 0,高度80
  • 拖動label名稱和類型。組成 stack view。設(shè)置約束垂直居中,左邊距20
  • 拖動 imageview 收藏。設(shè)置約束垂直居中,右邊距20。大小50
  • 拖動 label 產(chǎn)地。設(shè)置約束20
  • 設(shè)置Cell 的 identifier為 CardCell
  • 創(chuàng)建 CaredCell 的控制器繼承UITableViewCell
  • 連接視圖和控制器
  • 把視圖中的 UI 組件和CaredCell控制器 outlet 連接起來(5個組件元素)

TableView數(shù)據(jù)填充

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return weapons.count
    }

    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let id = String(describing:CardCell.self)
        let cell = tableView.dequeueReusableCell(withIdentifier: id, for: indexPath) as! CardCell

        //Configure the cell...
        cell.weapon.text = weapons[indexPath.row]
        cell.weaponType.text = weaponTypes[indexPath.row]
        cell.origin.text = origins[indexPath.row]
        cell.weapImage.image = UIImage(named: weaponImages[indexPath.row])
        
        

        return cell
    }

圓角和陰影效果實現(xiàn)

通過extension 、@IBInspectable 來實現(xiàn)擴展。還是蠻有意思的。自定義代碼可以改版 xcode 的屬性面板。。。

//
//  UIViewHelper.swift
//  TableViewController
//
//  Created by Yang Peiyuan on 12/02/2018.
//  Copyright ? 2018 Yang Peiyuan. All rights reserved.
//

import UIKit
extension UIView{
    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius  = newValue
        }
    }
}

Simulator Screen Shot - iPhone 8 - 2018-02-12 at 11.54.13.png

第6章: 單元格交互

第7章: 單元格滑動菜單

第8章:導(dǎo)航和轉(zhuǎn)場

導(dǎo)航和轉(zhuǎn)場介紹

增加導(dǎo)航。通過 edit——embed in——NavigationController

修改標(biāo)題名稱。Navigation item——title

使用 large Title。NavigationController——prefers Large title

新場景

新增視圖ViewController

新增 weaponDetailViewController

在視圖中增加綁定關(guān)系

control+拖動。把 CarCell 拖動到weaponDetailViewController。選擇 push。

增加 image 組件。創(chuàng)建 outlet,headerimageview

傳值

增加 image 組件。創(chuàng)建 outlet,headerimageview


中級篇

model重構(gòu)

靜態(tài)單元格

導(dǎo)航欄定制、動態(tài)字體

視差動畫

特效、動畫、手勢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容