ios開發 如何控制appstore中顯示的語言_跟我學iOS14開發入門介紹

介紹

iOS 是由蘋果公司開發的移動操做系統 。蘋果公司最先於 2007 年 1 月 9 日的 Macworld 大會上公佈這個系統(最初叫 iPhone runs OS X)。該系統最初是設計給 iPhone 使用的(因此後來曾命名爲 iPhone OS),以後陸續套用到 iPod touch、iPad 以及 Apple TV 等產品上(因此在 WWDC 2010 上最終宣佈改名爲 iOS)。面試

做爲一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個個人iOS交流羣:812157648,無論你是小白仍是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 你們一塊兒交流學習成長!swift

iOS發展歷史

2007-2020 每一年發佈一個新版本,最新版本 iOS 14(本教程基於 iOS 14)。數組

Apple官網與開發者網站

開發硬件

  • 蘋果電腦:iMac 或者 MacBook 或 Mac mini 主機鏈接一個顯示器。網絡

  • 還能夠在普通電腦上裝一個黑蘋果系統(不推薦),安裝複雜且不穩定。session

開發軟件

iOS 使用 Xcode 工具進行開發。能夠在 App Store 搜索安裝,也能夠去 Apple 開發者網站下載安裝(本教程基於 Xcode 12)。app

開發語言

Swift 或者 Objective-C(本教程基於 Swift 5.x)。框架

開發者帳號

  • 我的 99 $/年函數

  • 公司 99 $/年

  • 企業 199 $/年

iOS系統四個層次

153041875458f1ccf1dc408d040f630e.png

  • Core OS 是最爲核心的系統層,包括了內存管理,文件系統,硬件管理,電源管理,安全管理等內容。

  • Core Services 包含了多種核心服務提供給 App 使用,如網絡、線程、定位等。

  • Media 層主要包括了各類媒體文件的處理,經過它咱們能夠在應用程序中使用各類媒體文件,進行音頻與視頻的錄製,圖形的繪製,以及製做基礎的動畫效果。

  • Cocoa Touch 層爲應用程序開發提供了各類有用的框架,而且大部分與用戶界面有關,它負責用戶在 iOS 設備上的觸摸交互操做以及一些其餘的關鍵功能。

建立第一個iOS項目

4c6ac90352af037e0303b47ac6aca33f.png

項目文件

baf8ab2a003abc06791ff74c760e50b8.png

App設置

  • 應用名

    • 項目 —> Target —> General —> Display Name
  • 應用圖標2d7cfb9d26b859f798fbf46edb524ea7.png

  • 啓動屏 LaunchScreen

    • 啓動屏影響分辨率,可經過 LaunchScreen 刪除驗證。

模擬器

27a86eb5e26bc5e253789c6b82d40abf.png

App初始化流程

AppDelegate

  • 程序入口@main(iOS 14 之前是 @UIApplicationMain)

  • didFinishLaunchingWithOptions啓動方法

  • 委託給SceneDelegate

SceneDelegate

  • window

  • 生命週期

class SceneDelegate: UIResponder, UIWindowSceneDelegate {var window: UIWindow?func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {guard let _ = (scene as? UIWindowScene) else { return }}func sceneDidDisconnect(_ scene: UIScene) {}func sceneDidBecomeActive(_ scene: UIScene) {}func sceneWillResignActive(_ scene: UIScene) {}func sceneWillEnterForeground(_ scene: UIScene) {}func sceneDidEnterBackground(_ scene: UIScene) {}}
複製代碼

初始化

Main Storyboard

  1. 解析 Info.plist 得到Application Scene Manifest,找到Main Storyboard file base name設置的 Storyboard。 

  2. @main

  3. AppDelegate —> SceneDelegate

  4. 顯示 Main.storyboard 中初始化的控制器。

Storyboard介紹
  • 容器概念

  • is Initial View Controller(箭頭移動)

  • Storyboard 中的界面與ViewController.swift之間的聯繫(一個界面與一個類文件關聯)

純代碼

  1. 刪除 Info.plist 中的Main Storyboard file base nameApplication Scene Manifest最裏層的Storyboard Name

  2. 解析 Info.plist 發現沒有設置 Main Storyboard。

  3. @main。

  4. AppDelegate —> SceneDelegate

  5. 在 SceneDelegate 的willConnectToSession中純代碼初始化 UIWindow,並設置顯示的第一個控制器。window —> rootViewController —> UIViewController —> UIView

UIView與UIViewController

初步印象

iOS 開發中,一個界面就是一個 UIViewController(視圖控制器),界面上顯示的內容就是 UIView(視圖)。

UIView與UIViewController的關係

UIViewController 中默認有一個和屏幕同樣大的 UIView,UIViewController 管理着它的生命週期。全部放在界面上的 UI 控件都放在 UIViewController 的 UIView 之上,在 UIViewController 的代碼中能夠經過self.view屬性獲取它。開發中的其餘 UIView(及其子類)都放在該view上。 

UIViewController中UIView的生命週期函數

  • viewDidLoad:View 完成內存加載

  • viewWillAppear:View 即將顯示

  • viewDidAppear:View 徹底顯示

  • viewWillDisappear:View 即將消失

  • viewDidDisappear:View 完全消失

UIView

iOS座標系

  • 二維座標系

551d0cce080868bc1e019d802e4d2dfb.png

UIView添加到UIViewController的View

30bc4156156bea422bedf28fc074bc0a.png

UIView的容器概念

  • UIView 中能夠放其餘的 UIView

  • UIView 的層次關係(平級與包含)

UIView常見屬性

  • backgroudColor:背景色

  • frame:相對父視圖的座標和大小

  • bounds:相對自身的座標和大小,因此 bounds 的 x 和 y 永遠爲0。

  • center:相對父視圖的中心點座標

  • alpha:透明度(0.0 ~ 1.0)

  • tag:標記(Int 類型,默認等於0),設置後,能夠經過所在容器View.viewWithTag方法拿到這個視圖。

  • title:標題

  • superview:父視圖

  • subviews:全部子視圖

UIView常見方法

  • addSubview:添加視圖到父視圖

  • removeFromSuperview:將視圖從父視圖中移除(需提早講解觸摸方法)

  • viewWithTag:根據 tag 值獲取視圖

  • insertSubview:在指定視圖的上/下面插入視圖

  • bringSubviewToFront:把視圖移到最頂層

  • exchangeSubviewAtIndex:將2個位置的視圖互換

演示UIView與UIViewController

  • Storyboard

    • 注意左側面板的視圖層次結構

    • 屬性面板的重要屬性介紹

  • 純代碼

    • 與 Storyboard 屬性面板的屬性對應

注意代碼的書寫位置,每每有人因爲書寫的位置不對致使代碼報錯。

@IBOutlet與@IBAction

引入

如何在代碼中獲取 Storyboard 中的自定義 UIView?目前有兩種方式:

  • 經過 tag 屬性:一旦視圖多了,或者忘了設置 tag,亦或者設置了相同的 tag,都會出現問題。

  • 經過 subviews 屬性:一旦視圖多了很難經過數組準確獲取某個 View。

那麼有沒有更加友好、更加直觀、更加便捷、更加高效的方法呢?答案是確定的,那就是 @IBOutlet 與 @IBAction

@IBOutlet

  • 寫於類中的屬性

  • 與 Storyboard 中的 UIView 創建聯繫。

  • 此時的屬性就表明 Storyboard 中的 UIView

  • 全部的 UI 控件均可以拖拽 @IBOutlet。

@IBAction

  • 寫於類中的方法

  • 與 Storyboard 中的 UIView 產生的事件創建聯繫。

  • 當相應的事件發生時,方法就會被調用。

  • 只有繼承自 UIControl 的 UI 控件能夠拖拽 @IBAction。

順向與反向拖拽連線

  • 順向拖拽連線:經過 Storyboard 向類文件拖拽連線。

  • 反向拖拽連線:經過類文件向 Storyboard 拖拽連線。

連線的前提

Storyboard 中的 UIViewController 與 想拖拽的類進行了關聯。

經典的連線錯誤

  • UIView 連線後刪除了類中的 @IBOutlet 或者 @IBAction。

  • UIView 連線後改變類中的 @IBOutlet 或者 @IBAction 名字。

  • 錯誤信息

  1. @IBAction:unrecognized selector sent to instance

  2. @IBOutlet:this class is not key value coding-compliant for the key XXX

原文做者:琉璃紗

原文地址:0x9.me/Z7dh6

相關文章
相關標籤/搜索