iOS 中創建一個Universal App並且添加多個target – iPhone手機開發技術文章 iPhone軟體開發教學課程

在iOS中要想做一個通用iPhone和iPad的應用其實很簡單,我們隻需要在創建建工程的時候選擇

這樣你創建出來的工程就可以像這樣

那麼如果要想在工程裡判斷什麼時候處理iPad的邏輯什麼時候處理iPhone的邏輯也很簡單,隻需要添加一個define即可

 


#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
if (isPad) {
        self.view.backgroundColor = [UIColor yellowColor];
    }else{
        self.view.backgroundColor = [UIColor blueColor];
    }

這樣的話,就可以看到效果瞭,自行測試吧

 

 

如果要想改變已經做好的工程也很容易,在target的旁邊也有一個選項,也可以改變

 

添加target

如果你做一個工程有很多相似之處,例如一個是收費版,一個是免費版,那麼可以用添加target的方法來完成

 

從XCode左側的列表中, 我們可以看到一個Target包含瞭Copy Bundle Resources, Compile Sources, Link Binary With Libraries. 其中
Copy Bundle Resources 是指生成的product的.app內將包含哪些資源文件
Compile Sources 是指將有哪些源代碼被編譯
Link Binary With Libraries 是指編譯過程中會引用哪些庫文件

通過Copy Bundle Resources中內容的不同設置, 我們可以讓不同的product包含不同的資源, 包括程序的主圖標等, 而不是把XCode的工程中列出的資源一股腦的包含進去.
而這還不是一個target所指定的全部內容. 每個target可以使用一個獨立, 不同的Info.plist文件.
我們都知道, 這個Info.plist文件內定義瞭一個iPhone項目的很多關鍵性內容, 比如程序名稱, 最終生成product的全局唯一id等等.

而且不同的target還可以定義完整的差異化的編譯設置, 從簡單的調整優化選項, 到增加條件編譯所使用的編譯條件, 以至於所使用的base SDK都可以差異化指定.

 

可以通過復制target去創建新的target,也可以自己完全創建新的target,之後如果想判斷哪個target做什麼操作,就可以使用這個方法

 


NSString* bundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@CFBundleName];
    NSLog(@name == %@,bundleName);

 

 

 

發佈留言