1. 程式人生 > >iOS-專案配置(新專案)

iOS-專案配置(新專案)

1.App型別:社交、電商、視訊、娛樂、新聞

2.App開發模式

①迭代開發(原有基礎上開發)

②獨立開發

專案開發方式:①storyboard ②純程式碼

其他:需求文件、原型圖、介面文件、開發設計文件

3.Target-General配置

Display Name                  展示名稱

Bundle Identifier              捆綁識別符號  

Info.plist

version:                            AppStore版本

build:                                工程的構建版本

Deployment Target :      開發所支援的最低版本

Devices:                            支援的裝置(universal、iPhone、iPad)

Main Interface               入口

Device Orientation :       支援裝置方向

Status Bar Style :           設定程式啟動時的狀態列樣式(一般隱藏)

Embedded Binaries :     .a 檔案

Linked Frameworks and Libraries .新增依賴庫

AppIcons and LaunchImages         設定AppIcon和啟動圖

其他配置

①啟動圖配置(LaunchScreen>LaunchImage)

/*
啟動圖配置優先順序:
 優先順序:LaunchScreen > LaunchImage Xcode配置了,不起作用
 刪掉 LaunchScreenFile-> LaunchScreen.storyboard
 1.清空xcodew快取 2.直接刪掉程式 重新執行
 如果是通過LaunchImage設定啟動介面,那麼螢幕的可視範圍由圖片決定
 注意:如果使用launchImage,必須讓你的美工設定各種尺寸的啟動圖片
 LaunchScreen Xcode 6 開始才有的
 好處:
 1.自動識別當前真機或者模擬器的尺寸
 2.只要讓美工提供一個可拉伸的圖片就可以了
 LaunchScreen底層實現:把launchScreen截圖,生成一張圖片,作為啟動介面
*/

②專案結構搭建(框架)

UITabBarController+導航控制器

封裝誰的事情誰管理、方便程式碼維護

③UIApplication作用

    /*
     1.建立UIApplication(1.開啟網頁,發簡訊,打電話 2.設定應用程式提醒數字 3.設定聯網狀態 4.設定狀態列)
     2.建立AppDelegate代理物件,並且成為UIApplication代理,(監聽整個app生命週期,處理記憶體警告)
     3.開啟主執行迴圈,保證程式一直執行(runloop:每一個執行緒都有runloop,主執行緒有一個runloop自動開啟)
     4.載入info.plist,判斷是否指定了main.storyboard,如果指定,就會去載入
     //AppDelegate設定根檢視步驟
     1.建立視窗
     2.設定根控制器
     3.顯示視窗
     */

④外掛路徑

  /*
    1.改外掛 -> 如何去查詢外掛 -> 外掛開發知識 -> 外掛程式碼肯定有個地方指定安裝在什麼地方
    1.開啟外掛 2.搜尋plug 3.就能找到安裝路徑
 */

⑤load方法和initialize方法的區別

initialize :這個方法會在第一次初始化這個類之前呼叫,我們用它來初始化靜態變數.

呼叫時機: 類似懶載入,如果沒有使用這個類,那麼系統預設不會呼叫這個方法,且預設只加載一次。(在init之前)當向該類傳送第一個訊息時,先呼叫類中的,再呼叫類別中的(類別中如果有重寫),如果該類只是引用,沒有呼叫,則不會執行initialize方法。

load :在載入類的時候就被呼叫,也就是iOS應用啟動的時候,就會載入所有的類,就會呼叫每個類的 +load方法。

呼叫時機:預設執行且在main函式之前,先呼叫類中的,再呼叫類別中的(類別中如果有重寫)

共同點:自動呼叫父類的,不需要super操作,自動呼叫且僅僅會呼叫一次(不包括外部顯示呼叫)

注意:initialize可能會執行多次

在建立子類物件時,首先要建立父類物件,所以會呼叫一次父類的initialize方法,然後建立子類時,儘管自己沒有實現initialize方法,但還是會呼叫父類的方法。

正確使用:

// In Person.m
+ (void)initialize {
    if (self == [Person class]) {
        NSLog(@"Initialize Person, caller Class %@", [self class]);
    }
}

⑥Appearance

    /*
     appearance:
     1.只要遵守了UIAppearance協議,還要實現這個方法
     2.哪些屬性可以通過appearance 設定,只有被UI_APPEARANCE_SELECTOR巨集修飾的屬性,才能設定
     3.[UITabBarItem appearance] 預設設定全域性(先remove 然後設定appearance 最後再addSubView)
     [self.view removeFromSuperView];
     
     UISwitch *switchView = [UISwitch appearance];
     switchView.onTinColor = [UIColor redColor];
     [[UIApplication sharedApplication].keyWindow addSubView:self.view];
     */
    
    //獲取整個程式下的TabBarItem
//    UITabBarItem * tabBarItem = [UITabBarItem appearance];
    //開發中建議使用這種 只在某個類設定統一屬性
    //iOS 9.0之前
    //UITabBarItem * tabBarItem = [UITabBarItem appearanceWhenContainedIn:self, nil];
    //iOS 9.0之後
    UITabBarItem * tabBarItem = [UITabBarItem appearanceWhenContainedInInstancesOfClasses:@[HKTabBarController.self]];
    //設定按鈕選中標題的顏色:富文字 、顏色、字型、陰影、空心、圖文混排
    //建立一個描述文字屬性的字典
    NSMutableDictionary * attrs = [NSMutableDictionary dictionary];
    attrs[NSForegroundColorAttributeName] = kBlackColor;
    [tabBarItem setTitleTextAttributes:attrs forState:UIControlStateSelected];