Вопрос по uiview, xcode, xib, iphone, window – Не уверен, почему UIView подталкивается примерно на 10 пикселей

10

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

<code>[window addSubview:myView];
</code>

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

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

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

РЕДАКТИРОВАТЬ: Я немного сузил проблему. Я использую два метода для загрузки подпредставления. Когда я загружаю первый вид внутриapplicationDidFinishLaunching Все отлично. Однако, если я заменю два сообщения наwindow с[self originalView] метод, то все идет немного сумасшедшим.

<code>- (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];

}
</code>

Из того, что я вижу, я всегда вызываю одни и те же строки кода, независимо от того, находится ли он внутриapplicationDidFinishLaunching или в[self originalView] но похожеwindow оказывается другим объектом.

Ваш Ответ

5   ответов
1

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

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];

Теперь он работает нормально, удачи ~ :)

12

толкая его на UINavigationController), он регулирует свою рамку вида.

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

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

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

shouldAutorotate definition in your root controller - not sure if it is a bug or not, but try to stay consistent with the return of that function for all sub-viewcontrollers (usually results in a viewcontroller being hidden behind the status bar) a wantsFullscreen definition of a subview - set to NO if possible

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

Похожие вопросы