Я создал простое приложение для iPhone с двумя файлами .xib. В делегате приложения при завершении запуска приложения я отображаю первый файл .xib, вызвав:
[window addSubview:myView];
и я делаю то же самое в IBAction для UIButton, чтобы изменить представление на myView2.
Что я обнаружил, так это то, что при запуске приложения для обоих представлений появляется белая полоса размером около 10 пикселей. Я также заметил, что кнопки смещены на 10 пикселей (прибл.). Поэтому у меня создается впечатление, что вид отображается с 10 пикселей за пределами экрана и заканчивается коротким.
Любая идея, почему это может происходить, как я могу это исправить или как я могу дальше отлаживать то, что происходит? Я проверил свои файлы .xib, и они занимают всю высоту устройства (т. е. без белых полос), так что это похоже на проблему внутри XCode.
РЕДАКТИРОВАТЬ: я немного сузил проблему. Я использую два метода для загрузки подвида. Когда я загружаю первый вид внутри applicationDidFinishLaunching
, все в порядке. Однако, если я заменю два сообщения на window
методом [self originalView]
, все пойдет наперекосяк.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
//[self originalView]; <- I want to use this instead of the following two lines
// Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
-(void)endView{
endV = [[EndViewController alloc] initWithNibName:@"EndView" bundle:nil];
[window removeFromSuperview];
[window addSubview:endV.view];
}
-(void)originalView{
viewController = [[MyAppViewController alloc] init];
[window removeFromSuperview];
[window addSubview:viewController.view];
}
Из того, что я вижу, я всегда вызываю одни и те же строки кода, независимо от того, находится ли он внутри applicationDidFinishLaunching
или в [self originalView]
, но кажется, что window
оказывается другим объектом.