2015-02-23 86 views
1

我的應用程序有不同的目標,因爲相同的應用程序由不同的客戶端使用,每個客戶端都有自己的品牌。使用多目標圖像目錄

在我的圖片資源目錄我有圖像集,如:

Client123_LoginBackground

ClientABC_LoginBackground

ClientBFG_LoginBackground

所以,在我的應用程序在那裏我設置背景,我該如何告訴我的應用程序使用哪個圖像?

我可以以某種方式使用目標名稱來執行此操作嗎?

[UIImage imageNamed:@"{ClientABC}_LoginBackground"]; 

回答

1

1)預處理宏添加到您的項目,並定義基於每個目標的值,標識不同的客戶:)

Preprocessor macro

2確保爲所有相關的指標做和所有的環境。

3)創建這樣的事情:

#define NSStringize_helper(x) #x 
#define NSStringize(x) @NSStringize_helper(x) 

+ (NSString *)clientName 
{ 
#ifndef CLIENT_TYPE 
    #error CLIENT_TYPE is not defined 
#endif 

    return NSStringize(CLIENT_TYPE); 
} 

4)現在你可以很容易地做到這一點:

NSString *imageNameString = [NSString stringWithFormat:@"%@_LoginBackground", self.class.clientName]; 
[UIImage imageNamed:imageNameString]; 
+0

有沒有一種方法(以確定哪些圖像比例1X,2X,3X等)在每種情況下都被選中? – 2015-02-24 14:12:38

+0

我不這麼認爲,你想達到什麼目的?圖像比例尺背後的想法是,您不必知道選擇了哪一個,這取決於設備,您始終肯定它會是相關設備的正確圖像比例。如果你真的想識別設備,有辦法做到這一點,如[這](https://gist.github.com/Jaybles/1323251) – Edgar 2015-02-24 14:16:56

+0

我試圖調試,爲什麼它不工作的可能原因。後臺按預期工作,但現在我無法像顯示徽標的UIImageView一樣工作。 – 2015-02-24 14:26:26