我正在寫一個通用的應用程序。因此,我設置了它,以便我的XIB/NIB不是使用視圖控制器創建的,而是單獨創建的,然後通過將XIB上的類名稱設置爲相應視圖控制器的類名稱(和將文件所有者上的視圖鏈接到XIB上的視圖)。然後我加載適當的XIB/NIB(iPhone或ipad)當視圖控制器被初始化,像這樣:奇怪的UIView座標問題
SomeViewController *vc = [[SomeViewController alloc] initWithNibName:@"SomeView-iPhone" bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
[vc release];
另外,iphone版本是設置在底部一個的UITabBarController並且在頂部一個UINavigationController。這是創建這樣的:
MyAppDelegate *appDelegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
UINavigationController *localNavigationController;
UITabBarController *tabBarController = [[UITabBarController alloc] init];
NSMutableArray *localControllersArray = [[NSMutableArray alloc] init];
//setup the first tab
FirstViewController *vc = [[FirstViewController alloc] initWithNibName:@"FirstView-iPhone" bundle:nil];
localNavigationController = [[UINavigationController alloc] initWithRootViewController:vc];
[localControllersArray addObject:localNavigationController];
[localNavigationController release];
[vc release];
//setup the second tab
SecondViewController *vc = [[SecondViewController alloc] initWithNibName:@"SecondView-iPhone" bundle:nil];
localNavigationController = [[UINavigationController alloc] initWithRootViewController:vc];
[localControllersArray addObject:localNavigationController];
[localNavigationController release];
[vc release];
....
//set the controllers onto the tab bar
tabBarController.viewControllers = localControllersArray;
[localControllersArray release];
[appDelegate.window setRootViewController:tabBarController];
[tabBarController release];
所有這些工作完全正常。 iPhone視圖顯示正常(帶有工作標籤欄和導航欄)和導航工作正常。這裏是奇怪的事情(兩條怪異的怪物)。
,其放置爲IB - 大多數用戶界面元素(標籤,按鈕等)顯示優良
- 如果我在代碼中創建一個UIScrollView並將其添加到視圖,它顯示了優良
- 如果我創建IB中的UIScrollView並將其放在視圖上,它會在設計時從IB出現的位置運行時轉移93像素
- 如果我在IB中創建UIScrollView作爲單獨視圖,然後將其添加到在代碼中的主視圖它被調換了93個像素。
換句話說,如果我這樣做:
[scrollView setFrame:CGRectMake(0,0,320,100)];
[self.view addSubview:scrollView];
然後,它會在0,0這是在代碼中創建一個UIScrollView顯示出來,但它會在顯示(0,-93 )爲在IB中創建的UIScrollView(並通過IBOutlet鏈接到ivar)。現在恰好93 + 44 + 49,這是標籤欄和導航欄的高度組合。這顯然不是巧合。
所以問題是,爲什麼iOS在運行時將導航欄和標籤欄的高度在IB中創建的滾動視圖向上移動(而不是其他UI元素,如UILabel或UIButton)?
編輯:我已經使用的代碼,在iPhone應用程序之前設置標籤欄和導航欄,它沒有這個問題,所以我懷疑這與使用initWithNibName初始化我的視圖控制器或XIB文件手動鏈接到VC,因爲這是我的通用應用程序不同。
可能重複的[UIView大小/位置不工作在iPhone上的iPhone上](http://stackoverflow.com/questions/7981962/uiview-size-position-not-working-on-ipad-as-on- iphone) – Caleb
這些問題甚至不相似。同樣的問題,兩個完全不同的背景。 – Joel