[英]How to load Separate NIB Files for iPhone 4-inch and iPhone 3.5 inch?
如何為我的iPhone應用程序加載單獨的nib文件,檢查用戶是否有iPhone 5 / iPod Touch 4英寸屏幕而不是3.5英寸屏幕?
這是在init方法中完成的嗎?
詳細信息 - 我沒有在整個應用程序中使用故事板。 有一次我會使用故事板並從其中一個視圖控制器調用它。 (有沒有辦法區分故事板?)
我正在尋找一個解決方案,在每個單獨的viewController中初始化...不是我會放在只運行一次的appdelegate中的東西。
Autolayout在我的許多情況下都不起作用。 設計非常圖形化,太多的空白區域讓事情看起來很糟糕。
我找到了辦法!
宏我從RayOfHope的https://stackoverflow.com/a/13068238/1492368獲得了這個宏
#define HEIGHT_IPHONE_5 568
#define IS_IPHONE ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5 )
所以在新的指定初始化器中initForLayout:我寫的
if(IS_IPHONE_5)
{
self=[super initWithNibName:@"DetailViewControlleriPhone5" bundle:nil];
}
else
{
self=[super initWithNibName:@"DetailViewController" bundle:nil];
}
舊的初始化器
我從Big Nerd Ranch那里學到了這一點:在使用標准初始化程序時拋出異常
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
@throw [NSException exceptionWithName:@"Wrong initializer"
reason:@"Use initForLayout:"
userInfo:nil];
return nil;
}
從另一個ViewController / AppDelegate調用View Controller所以當我從另一個視圖Controller或appdelegate調用這個DetailViewController時,我寫道:
DetailViewController *detailViewController = [[DetailViewController alloc] initForLayout];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.