Как вы справляетесь с книжными и альбомными видами - PullRequest
0 голосов
/ 23 марта 2009

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

В настоящее время у меня есть некоторые представления, которые в основном изображения. Эти изображения были повернуты, так что пользователь знает, что определенные разделы приложения будут находиться в ландшафтном режиме. Все мои UILabel также вращаются, чтобы дать этот эффект.

У меня вопрос, есть ли лучший способ справиться с этим. Есть ли способ установить ориентацию программно во время выполнения? В этом случае мне больше не нужно будет поворачивать мои изображения / метки.

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

Ответы [ 2 ]

4 голосов
/ 24 марта 2009

Вы можете вызвать вращение в любое время, позвонив;

UIApplication *application = [UIApplication sharedApplication];    
[application setStatusBarOrientation: UIInterfaceOrientationWHATEVER animated:NO];

Мое текущее приложение в основном в альбомной ориентации, но имеет несколько портретных видов. В контроллерах представлений, соответствующих представлениям, пользователь должен иметь возможность вращаться, я разрешаю вращение, но предотвращаю анимацию. Это дает вам возможность переключаться на другое представление в вашей NIB, без какой-либо странной закручивания, выпадающей из экрана, что обычно происходит, если вы складываете представление во время анимации.

Надеюсь, вы найдете это полезным!

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (interfaceOrientation == UIInterfaceOrientationPortrait) {
    rotatingToPortrait = YES;
    [UIView setAnimationsEnabled:NO];
    return YES;
} else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    rotatingToPortrait = NO;
    [UIView setAnimationsEnabled:NO];
    return YES;
}
// Catch upside-down
return NO; }

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[UIView setAnimationsEnabled:YES];
if (rotatingToPortrait) {
    // Swap in portrait view here
} else {
    // Swap it out here
} }
0 голосов
/ 23 марта 2009

В настоящее время я не знаю ни одного способа программного управления ориентацией. Это означает, что нет никакого способа сказать устройству «повернуть в ландшафт сейчас». Вы можете указать только такие вещи, как:

(BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation

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

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

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