iPhone - UIViewController, не вращающийся, когда ориентация устройства изменяется

Вы можете использовать Компаратор бит для сортировки по любому свойству в вашем пользовательском классе.

14
задан Ryu 11 January 2009 в 12:57
поделиться

4 ответа

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

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    [self layoutSubviews];
}

и также layoutSubviews

- (void)layoutSubviews
{
    NSLog(@"layoutSubviews called");

    ...recalc rects etc based on the new self.view.bounds...
}

, я не уверен, что это абсолютно требуется, но это работало на меня.

1
ответ дан 1 December 2019 в 08:43
поделиться

Я заметил, что существуют проблемы при вращении UIView, это не является первым, или только просмотрите как прямого ребенка главного окна.

Поэтому, если Ваш UIView является частью Контроллера Навигации или Контроллера Представления Вкладки, необходимо будет также переопределить shouldAutoRotateToInterfaceOrientation на Контроллере Представления Контроллера или Вкладки Навигации.

Также: использование [UIApplication setStatusBarOrientation] помогает работать вокруг вещей, если/когда необходимо сделать это вручную.

3
ответ дан 1 December 2019 в 08:43
поделиться

Иногда, если Вы добавляете подпредставление к представлению, это - Ваша обязанность удостовериться, что методы передаются подпредставлению; несколько дней назад я записал короткое сообщение об этом. Например, если Вы имеете UIViewController и добавляете UINavigationController как подпредставление, необходимо добавить этот код к UIViewController, если Вы хотите viewWillAppear:animated: позвониться, когда UINavigationController.view появляется:

-(void)viewWillAppear:(BOOL)animated { 
[super viewWillAppear:animated];
[projectNavigationController viewWillAppear:animated];
}

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

1
ответ дан 1 December 2019 в 08:43
поделиться

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

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

26
ответ дан 1 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

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