2010-10-10 11 views
10

Mam następujący kod:iPad orientacji launch kiedy płasko na powierzchni

-(void)viewWillAppear:(BOOL)animated { 

    UIDeviceOrientation orientation = [[UIDevice currentDevice] UIInterface]; 

    if(orientation==UIDeviceOrientationLandscapeLeft || orientation==UIDeviceOrientationLandscapeRight) { 
     NSLog(@"Device Landscape"); 
    } else { 
     NSLog(@"Device Portrait"); 
    } 

} 

Działa to doskonale na symulatorze i na urządzeniu, ale tylko wtedy, gdy iPad jest nie płasko na powierzchni, na przykład gdy leżałem iPad na moim biurku i załaduj widok, który powie jego portret, więc nie mogę wykryć orientacji, gdy pojawi się widok.

Jakieś pomysły na najlepszy sposób wykrywania orientacji interfejsu podczas wywoływania metody viewWillAppear?

Dzięki

+0

No, co chcesz aplikacja zrobić, gdy iPad jest w rzeczywistości skierowana w górę? –

+0

Chce wiedzieć, czy nie pokazać widoku w orientacji poziomej lub pionowej, gdy urządzenie leży płasko. – Emil

+0

Mam subview, który jest wyświetlany w miejscu różnicy, w zależności, czy widok jest krajobrazowy/portretowy. Więc muszę wiedzieć, która orientacja interfejs jest, gdy viewAppears. – Steve

Odpowiedz

26

należy użyć [self interfaceOrientation] zamiast orientacji urządzenia.

0

Po pierwsze, czy wiesz o właściwości interfaceOrientation UIViewController? Wygląda na to, że próbujesz go powielić. Jeśli naprawdę chcesz to zrobić, po prostu zasubskrybuj powiadomienia o zmianach orientacji urządzenia, sprawdź, czy nowa orientacja jest prawidłową orientacją interfejsu (jest to makro), a jeśli tak, zapisz wartość do pewnej zmiennej (np. LastSeenOrientation). Wtedy możesz polegać na tej wartości, gdziekolwiek chcesz.

8

[[UIApplication sharedApplication] statusBarOrientation] działa również jeśli są gdzieś w kodzie, który nie ma dostępu do [self interfaceOrientation]

+0

+1, naprawdę działa dobrze, dzięki! –

Powiązane problemy