나는 범용 애플리케이션을 작성 중이다. 결과적으로 필자는 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];
또한, 아이폰 버전은 하단에 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보기는 작동 탭 막대 및 탐색 모음을 사용하여 잘 표시되며 탐색 기능이 잘 작동합니다. 사물이 이상하게 생겨나는 곳입니다 (2 마리의 괴물). IB 내에 위치
- 대부분의 UI 요소 (라벨, 버튼 등) I 코드에있는 UIScrollView을 생성하고 뷰에 추가 - 만약
, 그것은 미세한
I 작성 - 만약 나타 잘 보여 IB의 UIScrollView를 뷰에 배치하면 런타임에 디자인 타임에 IB에 나타나는 런타임에서 93 픽셀만큼 이동합니다.
- IB에서 UIScrollView를 별도의 뷰로 만든 다음 코드에서 메인보기는 93 픽셀만큼 조 변경됩니다. 즉
, 나는이 할 경우 :
다음[scrollView setFrame:CGRectMake(0,0,320,100)];
[self.view addSubview:scrollView];
이 코드에서 만든있는 UIScrollView에 대한 0,0에 나타날 것이다, 그러나 (에 0을 표시 것, -93)에서 생성 된 UIScrollView에 대해 (그리고 IBOutlet을 통해 ivar에 링크 됨). 이제는 93 = 44 + 49로 탭 막대와 탐색 모음을 결합한 높이가됩니다. 그것은 분명히 우연이 아닙니다.
그래서 iOS가 IB에서 만든 스크롤보기를 탐색 막대 및 탭 막대의 높이만큼 런타임에 이동합니까 (UILabel 또는 UIButton과 같은 다른 UI 요소는 아닙니까).
편집 : iPhone 전용 앱에서 탭 표시 줄과 탐색 표시 줄을 설정하는 코드를 사용했는데이 문제가 없으므로 초기화에 initWithNibName을 사용하는 것과 관련이 있다고 생각됩니다. 내보기 컨트롤러 또는 XIB 파일을 VC에 수동으로 연결하면 보편적 인 앱과는 다른 것입니다.
가능한 [UIView 크기/위치가 iPhone에서와 같이 iPad에서 작동하지 않음] (http://stackoverflow.com/questions/7981962/uiview-size-position-not-working-on-ipad-as-on- 아이폰) – Caleb
질문은 유사하지 않습니다. 같은 문제, 완전히 다른 두 가지 상황. – Joel