2009-06-28 8 views
10

Я создал простое приложение для iPhone, в котором есть два .xib-файла. В приложении делегат приложения было закончить запуск я показываю первый файл .xib по телефону:Не знаете, почему UIView подталкивается примерно на 10 пикселей

[window addSubview:myView]; 

и я делаю то же самое на IBAction для UIButton, чтобы изменить вид myView2.

Что я нахожу, так это наличие белого бара около 10 пикселей при запуске приложения для обоих видов. Я также заметил, что кнопки смещены на 10 пикселей (приблизительно). Поэтому у меня создается впечатление, что представление отображается с 10 пикселей с экрана и заканчивается коротким.

Любая идея, почему это может произойти, как я могу это исправить, или как я могу дальше отлаживать то, что происходит? Я проверил мои .xib-файлы, и они потребляют всю высоту устройства (т. Е. Нет белых полос), поэтому это выглядит проблемой внутри XCode.

EDIT: Я немного сгладил проблему. Я использую два метода для загрузки subview. Когда я загружаю первый вид внутри 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, оказывается, чтобы быть другим объектом.

ответ

12

При использовании UIViewController обычным способом (то есть pushing it on a UINavigationController) он регулирует рамку своего представления.

Поскольку вы добавляете подзаголовок вручную, вам необходимо самостоятельно отрегулировать рамку. Происхождение находится в верхнем правом углу (вверху строки состояния). Вы хотите переместить свой вид на 20 пикселей вниз.

+0

Все примеры, которые я видел, используют UINavigationController для отображения иерархии списков, это то, для чего он используется? Или я могу использовать его, чтобы контролировать, какие виды отображаются, даже если им не нужен NavigationBar и т. Д.? –

2

В построителе интерфейсов вы можете добавить имитируемые интерфейсные элементы, которые будут отображаться программно (например, строка состояния или панель навигации). В своем инспекторе выберите свое представление и перейдите на вкладку «Атрибуты». Здесь вы можете имитировать строку состояния, верхнюю панель или нижнюю панель.

5

Вот мое решение:

// adjust the frame of subview which is going to be add 
self.navController.view.frame = CGRectMake(0, 0, 320, 460); 
[self.view addSubView:self.navController.view]; 

Он теперь работает хорошо для меня, удачи ~ :)

1

Похоже, вы называете pushVC к этому UIViewController в неправильном месте. У меня такая же проблема. Он был решен путем перемещения [self.navigationController pushViewController: animated:] от viewDidLoad до viewDidAppear: в предыдущем UIViewController в иерархии.

1

Всякий раз, когда появляется странный пробел, или точка зрения частично скрыта за строкой состояния, то есть что-то делать с любым

  1. определения shouldAutorotate в корневом контроллере - не уверено, если это ошибка или нет , но попытаться остаться в соответствии с возвращением этой функции для всех суб-viewcontrollers (обычно приводит к ViewController прячась за строке состояния)
  2. определение wantsFullscreen из подвид - установите на NO, если это возможно

У меня был бот h ошибок в моем приложении и решили их! Надеюсь, я смогу сэкономить вам некоторое время (я потратил много денег на это)

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

  • Нет связанных вопросов^_^