[英]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件事
有了這些,您就可以基於設備在創建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.