2013-06-03 70 views
0

有沒有辦法從構建中排除非視網膜設備,並且是否允許在提交過程中使用?我不是針對iPad或iPad mini。我認爲3GS用戶很少,設備無法處理任何過於先進的事情。iOS中僅有Retina設備版本

我不想將非視網膜作品包含在包中。

+0

這是一個非常不好的理由,不支持非視網膜設備。就您的編程而言,所有iPad觸摸輸入都在_points_中(即,視網膜和非視網膜設備均使用768x1024點的座標),而不是像素。爲了使視網膜圖形正確顯示,[您必須設置內容比例因子](http://stackoverflow.com/q/9763368/111307)。 – bobobobo

+0

??我想你誤解了我的問題。 – jarryd

+0

這聽起來像你問如何防止非視網膜設備,甚至使用你的應用程序。 – bobobobo

回答

2

您不應該排除非視網膜設備,因爲iPad mini不是retine。也沒有構建選項來排除非視網膜設備。

因此,非視網膜設備將運行使用視網膜圖像和使用更多的內存,這可能會使他們用完內存。 如果您確實設法排除iPhone 3GS,則即使您的應用程序僅支持iPhone,它仍應在任何iPad上運行,但您的應用程序仍需要在非視網膜iPad mini上運行。

+0

編輯我的問題。我不是針對iPad或iPad mini。 – jarryd

+0

即使您不瞄準iPad,您的應用程序仍然需要在iPad上運行,這並沒有什麼區別。 – rckoenes

+0

沒錯,忘了那個。用任何使用pngs的奇怪的@ 2x選項。 – jarryd

0

您不必包含非視網膜圖稿。只使用非@ 2x的命名圖像;這會導致在非視網膜設備上表現不佳,因爲它們也比較老,並且硬件較慢(不包括iPad mini)。您不能排除基於硬件的設備(除了可能通過設置最低的iOS版本)。

0

不,不幸的是,這是不可能的。

你可以看看:Information Property List Key Reference你可以在這裏看到你可以配置你的應用程序需要運行的東西。

也許你可以在會話看一看:UIRequiredDeviceCapabilities,試圖將其調整到僅在有能力的特定組合的設備上運行,但就像你可以在頁面上看到,這是不可能的配置它基於設備顯示。

- 你可以做只支持設備更強大的硬件什麼

一個例子是定義你需要使用只有最新的設備有像硬件:面向前方的攝像頭。 (iPad 2擁有它,而不是視網膜,只是您可以利用的功能的一個例子)。

也許在您的應用程序中可以檢查比例尺,並採取兩種不同的方法。

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] 
    && [[UIScreen mainScreen] scale] == 2.0) { 
    [self runTheFeature]; 
} else { 
    [self alertYourDeviceSucks]; 
} 
+1

[這不會通過應用程序提交過程。](https://developer.apple.com/appstore/resources/approval/guidelines.html) – bobobobo

+0

@bobobobo,它只是一個例子,我是不要期望他會顯示警報,但運行兩種不同的方法。 – ggrana

+1

我知道,但是,對於所有的意圖和目的來說,這是一個非常糟糕的主意。現在它的設計方式基本上是視網膜,只需2倍像素即可「看起來更好」,而且您不必擔心代碼中的問題。你編碼的方式,你現在必須擔心它。 – bobobobo

2

在過去,你可以使用的方法就像this blog post描述的。閱讀後,請參閱this updated device capabilities matrix

本質上,您選擇一組UIRequiredDeviceCapabilities鍵,將一組受支持設備限制爲視網膜顯示的設備。

不幸的是,從矩陣中可以看出,iPad mini在視網膜顯示方面無效(沒有Retina顯示屏,但它不缺少任何其他功能,可以用來排除它其他視網膜顯示設備)。

編輯:根據您的編輯,由於您不是爲iPad/iPad mini打造的,您可以使用上述方法並要求使用前置攝像頭。請參閱this similar Q&A

0

你不應該排除非視網膜設備,作爲最後回答說,但如果你覺得你有,那麼你可以這樣做:
1在應用程序委託檢查設備是否有Retina顯示屏前加上主視圖控制器到一個UIWindow

if(IS_RETINA) 
{ 
     [self initTheMainViewCotnroller]; 
} 
else 
{ 
     // show alert, warning or anything 
     [self showErrorOrWarningMessage]; 
} 

注:IS_RETINA - 是一個宏觀的

#define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0)) 
+0

對用戶的任何消極情緒都不好。我想知道是否可以在構建級別或者甚至在構建到設備上之前。 – jarryd

相關問題