簡體   English   中英

XCode通用應用程序

[英]XCode universal App

我有一個適用於iPad和iPhone的通用iOS應用。 我創建了帶有xib及其用於iPad的類。 現在如何為iPhone設計它? 為iPhone創建另一個xib? 如果是這樣,我告訴應用程序在何時何地為iPhone加載xib,因為現在它加載了iPad xib,當然一切都太大了。 提前致謝

好吧,您的視圖控制器有一個名為initWithNibName: bundle: 做這個:

MyController *controller = [[MyController alloc] initWithNibName:[NSString stringWithFormat:@"myController_%@",deviceName] bundle:nil];

編輯:你必須做2 xibs,對不對? 將它們命名為Settings_iPhone.xib和Settings_iPad.xib。 當您想顯示“設置”屏幕時,請繼續並聲明

NSString *deviceName = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) ? @"iPhone" : @"iPad";

之后 :

Settings *controller = [[Settings alloc] initWithNibName:[NSString stringWithFormat:@"Settings_%@",deviceName] bundle:nil];

是的,您需要兩個筆尖文件。 您可以使用initWithNibName並通過使用以下代碼來檢測設備類型來指定筆尖的名稱。

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)

這將使您能夠區分不同的設備

當我需要執行這樣的應用程序時,我制作了2個xib文件,一個用於iPad,一個用於iPhone。 第一個是使用視圖控制器創建的。 第二個僅通過添加接口文件即可創建。 我嘗試獲取有意義的名稱(例如:ListNameVC.xib和ListNameVC_iPad.xib

在第二個xib上,您需要做2件事

  • 文件的所有者類必須指向正確的VC類
  • 您必須將對象中的視圖與文件所有者中的視圖出口鏈接起來(否則將在執行時崩潰)。

有了這些,您就可以基於設備在創建View Controller時調用正確的xib:

ListeNameVC* listeNameVC

if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){
    listeNameVC = [[ListeNameVC alloc] initWithNibName:@"ListeNameVC_iPad" bundle:nil];
} else {
    listeNameVC = [[ListeNameVC alloc] initWithNibName:@"ListeNameVC" bundle:nil];
}

如果需要在iPhone或iPad上執行其他操作,則可以在視圖控制器中使用UI_USER_INTERFACE_IDIOM。 例如,如果您以編程方式放置UIButton,或者為圖像設置的名稱分別為iPhone和iPad,

光盤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM