2010-05-14 4 views
3

Я использую несколько контроллеров во время запуска приложения в делегате приложения. Один контроллер предназначен для регистрации, а второй контроллер - это панель. tabbar загрузился нормально, но когда я нажал контроллер регистрации на окне, содержимое увеличилось на 20 единиц, и у меня есть хороший белый пустой экран внизу. Поэтому я воссоздал рамку моего регистрационного контроллера просмотра в своем методе viewdidload и сдвинул его на 20 единиц вниз. КодViewController оставляет 20px белый из нижней части экрана при нажатии

self.view.frame = CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height); 

и код в моем приложении делегата приложения запуска был

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    if (![self accountExists]) { 
       //code if account does not exists on iphone app database 
     self.registerAccount = [[registerViewController alloc] initWithNibName:@"registerViewController" bundle:nil]; 
     [window addSubview:registerAccount.view]; 
    } 
    else if([self autoLoginForAnyAccount]){ 
     //code for autologin to app 
    } 
    else { 
     self.tabBarController.selectedIndex = 1; 
     self.tabBarController.delegate = self; 
     [window addSubview:tabBarController.view]; 
    } 
    [window makeKeyAndVisible]; 
    return YES; 
} 

если кто-нибудь знает, почему существует пробел в нижней части, когда контроллер регистрации нажимается, пожалуйста, поделитесь со мной.

ответ

1

Я выясняю вопрос, но не причина. Проблема заключалась в размере окна, то есть в моем коде я создавал экземпляр registerViewController, поэтому его размер был размером окна минус размером строки состояния (поскольку это контроллер вида, который должен отображаться ниже строки состояния). Когда я нажал registerViewController на окно, то по какой-то причине (я не знаю, почему) контроллер просмотра не смог распознать строку состояния в заголовке, а 20px registerViewController отображал строку состояния. то я попробовал код registerAccount.view.frame = window.frame;, который устанавливает кадр моего регистрационного контроллера равным оконному контроллеру. Это удалило пустой белый экран внизу и теперь просматривает весь размер окна, но все же 20px находится за панель состояния, так как мой контроллер просмотра был слеп, чтобы увидеть существование строки состояния. Я попытался удалить строку состояния, используя код, который показал весь мой контроллер на экране, но я тоже хотел отобразить строку состояния.

Я выясняю свой путь, добавив объект UIViewcontroller в свой файл mainWindow.xib (как и мой контроллер панели вкладок), и я указал его класс на registerViewController и загрузил nib of registerViewController. Я также удалил строку self.registerAccount = [[registerViewController alloc] initWithNibName:@"registerViewController" bundle:nil];

и был заменен в моем делете .h-файле registerViewController *registerAccount; с UIViewController *registerAccount; и в файле mainWindow.xib. Я указал на этот новый контроллер отображения на этот контроллер. Теперь все работает нормально, но я до сих пор не знаю, почему viewcontroller не смог увидеть строку состояния, когда я нажал экземпляр registerViewController. , если кто-нибудь знает причину, пожалуйста, поделитесь здесь со мной.

+0

Знаете ли вы причину сейчас? Я борюсь с той же проблемой. – Hemant

3

В последнее время я прошел с той же проблемой. После обращения так много блогов & Q & Форумы, я нашел проблему белого пространства из-за неправильных настроек кадра.

Ниже решение, которое работает очень хорошо на моей стороне ...

[self.view setFrame:CGRectMake(0,0, self.view.bounds.size.width, self.view.bounds.size.height)]; 

Надежда, это поможет вам.

С уважением, iApple.

Смежные вопросы