2011-12-14 20 views
7

因此,我一直在做phonegap開發一段時間,並已在應用商店中製作了幾個應用程序。我製作了iphone和ipad應用程序,並將它們完全分開。我知道蘋果允許提交可以爲這兩種設備格式化的單個應用程序,我的問題是如何使用phonegap完成此操作?我知道我可以編輯項目設置併爲目標設備選擇ipad/iphone。但是,在我的代碼中,爲了讓它正常工作,我該做些什麼?phonegap ipad/iphone,在兩個設備上都有一個應用程序

因爲它是html,所以我在html(和jquery)中控制大小。例如,在我的iPhone應用程序,我可能有:

<img src="asdf.jpg" width="480"> 

然後同樣的iPad應用程序是:

<img src="asdf.jpg" width="1024"> 

這將是非常真棒,如果我可以在我的WWW兩個HTML文件文件夾,比如index.html和index-ipad.html,然後他們共享公共的img,css和js文件夾。這可能嗎?

我已經廣泛檢查了phonegap上的文檔,找不到任何東西。有人可以指導我做一個教程嗎?我真的很討厭在應用商店中爲同一內容設置多個應用程序。

編輯PER的評論如下

也許我不會用HTML中的width屬性,也許我會做到這一點:

<img src="asdf_ipad.jpg"> 

和:

<img src="asdf_iphone.jpg"> 

其中這兩個設備的尺寸都有兩個。在任何情況下,我都可以處理html/js/css,我只需要知道如何實現一個「開關」,使ipad呈現與iphone不同的東西。

+0

不熟悉的PhoneGap,但硬編碼的屏幕尺寸將會給你帶來一個維護如果發佈具有不同分辨率的新設備,將來頭痛。 – 2011-12-14 01:28:44

+0

克里斯,見上面的評論。我並不關心我使用的是什麼html/js/css,我只需要一種讓ipad和iphone渲染不同的方式。 – Landon 2011-12-14 01:38:37

回答

13

您可以指定最初打開的PhoneGap文件。看看應用程序:從AppDelegate.m

didFinishLaunchingWithOptions

做這樣的事情,打開iPad版不同的索引頁面:

if ([[[UIDevice currentDevice] model] containsString:@"iPad"]) { 
    ... 
    self.viewController = [[[MainViewController alloc] init] autorelease]; 
    self.viewController.wwwFolderName = @"www-ipad"; 
    self.viewController.startPage = @"index.html"; 
    ... 
} 
0

一個選項:

<img src="asdf.png" class="asdf"/> 

.ipad .asdf { 
    width: 1024px; 
} 
.iphone .asdf { 
    width: 480px; 
} 

$(function() { 
    var deviceType = (device.platform=='iPhone' && screen.width==768) ? 'ipad' : 'iphone'; 
    $('body').addClass(deviceType); 
}); 

注意deviceType邏輯非常簡單(即iPad的鎖定爲縱向),您將需要擴大辦理定向邏輯和潛在的增加進一步的邏輯,以檢測視網膜的設備和在未來更高分辨率的iPad上。

1

爲什麼不使用CSS媒體查詢來識別您的目標設備並根據需要更新圖像?例如JqueryMobile是否會爲Retina設備提供高分辨率圖標......

Here's an article關於如何使用這些將不同的樣式表應用於iPhone和iPad。

希望這會有所幫助!

0

好吧,我發現了一個解決方案,我只是使用JavaScript頁面轉發到我的其他HTML頁面是這樣的:

if(screen.width==768) 
    window.location='index-ipad.html'; 

所以我只是在我的index.html文件的代碼,然後,當然,我有一個不同的索引-ipad.html文件。這給了我自由去做任何我想做的事情,而不是僅限於小小的風格變化。注意,這沒有工作內部的jquery onload的東西$(function(){});去搞清楚。

我寧願用「服務器端」的方法來解決這個問題,這意味着它駐留在客觀的c層上。但是,不幸的是,我在目標C方面的技能還不夠完美。如果有人能給我這個解決方案,我將不勝感激!

相關問題