iPhone UIViewController идет под строкой состояния

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

я предпочитаю, если операторы по операторам выбора, потому что они более читаемы, и более гибки - можно добавить другие условия не на основе числового равенства, как "|| макс. < минута". Но для простого случая Вы отправили здесь, он действительно не имеет значения, просто делает то, что является самым читаемым Вам.

9
задан jszumski 3 May 2013 в 19:23
поделиться

3 ответа

I think your problem is that when you add a view to a window, you need to be aware of the state of the status bar and compensate for it:

if showing the status bar :
   [controller view].frame = CGRectMake(0, **20**, 320, 460);
else 
   [controller view].frame = CGRectMake(0, 0, 320, **480**);

this is why IB shows you a dummy status bar.

8
ответ дан 4 December 2019 в 06:22
поделиться

Вы вручную устанавливаете скрытое свойство панели приложения ПОСЛЕ добавления подпредставления? Я не думаю, что это так, но если он установлен на none при первой загрузке представления, он будет компоноваться так, как будто его нет, и если вы затем установите строку состояния, чтобы она не скрывалась, она появится вверху вашего представления.

Возможное решение - использовать [[представление контроллера] setNeedsLayout]; после добавления подпредставления или, возможно, [window layoutSubviews]; . У меня никогда не было большого успеха, используя их для устранения проблем с разметкой, но, поскольку они работают после ротации, попробовать стоит.

0
ответ дан 4 December 2019 в 06:22
поделиться

Я столкнулся с этой проблемой при отображении UIViewController через presentModalViewController .

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

- (void) viewDidAppear: (BOOL) animated {
    //manually adjust the frame of the main view to prevent it from appearing under the status bar.
    UIApplication *app = [UIApplication sharedApplication];
    if(!app.statusBarHidden) {
        [self.view setFrame:CGRectMake(0.0,app.statusBarFrame.size.height, self.view.bounds.size.width, self.view.bounds.size.height - app.statusBarFrame.size.height)];
    }
}
18
ответ дан 4 December 2019 в 06:22
поделиться