UIView показан смещенным к вершине - PullRequest
1 голос
/ 16 марта 2011

У меня есть простое приложение с двумя контроллерами представления.У них обоих есть UINavigationBar вверху, как заголовок.Второй UIViewController отображается как модальное представление, когда пользователь нажимает кнопку на первом.

Когда мое приложение запускается впервые, первоначальное представление не полностью покрывает основной UIView и кажется «нажатым»наверх (см. изображение ниже).enter image description here

После того, как я нажму на кнопку «инструкции», которая отображает другое представление с presentModalViewController: animated: и закрывает модальный ViewController, все отображается правильно.

Кто-нибудь знает, что яможет быть не так?

У меня ничего нет в viewWillAppear, и это мой viewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];

    if (!self.model) {
        self.model = [[FRRSushiRiceModel alloc] init];
        [[self.header.items objectAtIndex:0] setTitle:  @"Perfect Sushi Rice: Ingredients"];
    }
}

и мое приложение: didFinishLaunchingWithOptions:

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


    // Create and add the main controller (ingredients)
    self.ingredientsController = [[FRRIngredientsViewController alloc] init];
    [window addSubview:self.ingredientsController.view];


    [window makeKeyAndVisible];

    return YES;
}

Этот небольшой проект воспроизводитэто поведение: контрольный пример

Ответы [ 2 ]

3 голосов
/ 17 марта 2011

Вы сняли галочку с параметра " Wants Full Screen " в IB для UINavigationController или UIViewController?

enter image description here

1 голос
/ 27 марта 2011

Я нашел ошибку, ребята.

По сути, я доверял системе правильно установить рамку моих представлений в соответствии с используемой частью экрана. Это работает, когда вы добавляете его в какой-либо контроллер контроллеров (например, UINavigationController) или добавляете его через IB.

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

[[UIScreen mainScreen] applicationFrame] 

представляет часть экрана, доступную для приложений: весь экран без строки состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...