2010-11-15 27 views
2

我的任務是讓iOS 4.0中的應用程序再次在3.1.3和3.2中工作。大多數情況下它很直接,但是對於需要傳遞/返回值的比例和其他情況,處理新API非常困難。iOS 4.0 contentScaleFactor和scale - 如何在3.1.3中處理?

respondsToSelector/performSelector處理幾乎所有其他事情。

這裏是正在發生的事情的一個簡化版本:

-(float)getImageScaleFactor 
{ 
    if([[UIScreen mainScreen] scale == 2.0) 
     return kScaleFactorForRetinaDisplay; 
    else 
     return kScaleFactorForOlderDisplay; 
} 

比例尺沒有的iOS 4.0之前的。

任何人都可以展示可以在所有版本的iOS中工作的代碼示例嗎?

回答

2

我使用非常相似的代碼,但是你錯過了一個重要的部分:respondsToSelector:

if([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [UIScreen mainScreen].scale == 2.0f) 
    return kScaleFactorForRetinaDisplay; 
else 
    return kScaleFactorForOlderDisplay; 
+0

當然......捂臉時刻。我一直在使用基於SDK 3.1.3的舊版Xcode來標記所有要修復的內容,並且忘記了一旦我回到基本SDK 4.1後編譯這些東西就沒有問題 - 我只需避免使用respondsToSelector調用它們即可。但是真正讓我感到困惑的是,將部署目標設置爲3.1.3並沒有像切換到基本SDK 3.1.3那樣標記問題區域。 – 2010-11-16 00:12:55