Jak Obróć widok na krajobraz w app umieszczenie zakładek

głosy
7

Mam aplikację opartą umieszczenie zakładek.

Buduję 2 widoki, jeden w układzie pionowym, a drugi w tryb krajobrazu w konstruktorze Interface.

Teraz chcę coś jak iPod App. Chcę widok krajobraz się na pełnym ekranie, a ukrywa zakładkę i pasek stanu.

Robię pracować z podstawowym to:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
                                duration:(NSTimeInterval)duration { 
    if (self.landscape) {
        if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
        {
            self.view = self.portrait;
            self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(360));
        }
        else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)
        {
            self.view = self.landscape;
            self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
        }
        else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
        {
            self.view = self.landscape;
            self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
        }
        else
        {
            self.view = self.portrait;
            self.view.transform =  CGAffineTransformMakeRotation(degreesToRadian(-180));
        }
    }
}

Ale wszystko działa bałagan. Widok krajobraz nie poprawnie wypełnić obszar i elementy sterujące znajdują się w niewłaściwych miejscach, zmierzających jak desingned pierwszy.

Ponadto, nadal nie znalazł sposób, aby ukryć wszystko inne ...

Utwórz 10/02/2009 o 22:59
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
5

Spójrz na „AlternateViews” przykładowy kod Apple.

Podstawowym założeniem jest to, że można wykryć fizycznej orientacji urządzenia z powiadomień, a następnie aktywować nowy kontroler widoku „modally” i go zwrócić się do pełnego ekranu. Wyłączyć rotację interfejsu poprzez shouldAutorotate ... powrót TAK tylko dla jednej orientacji, ponieważ robisz to wszystko ręcznie z powiadomień. Po zmianie orientacji fizycznej, twój kontroler modalne widoku jest albo przedstawiane lub odrzucić.

Odpowiedział 30/11/2009 o 01:47
źródło użytkownik

głosy
1

Wydaje się, że spora liczba programistów, którzy chcą mieć element pasek kart wziąć je do widoku pełnego ekranu krajobraz (bez paska statusu, nie bar Tab), a następnie wrócić.

I zostały zaksięgowane pytanie o tym, czy jest to rzeczywiście możliwe na forum programistów Apple, ale jeszcze nie miał odpowiedzi.

Dlaczego jest to trudne? (Przepraszam, to kwestia początkujących? Wydaje się, że pewne dość oczywiste rzeczy nie powinno być trudne) Nikt nie znalazłem jeszcze online ma jasnej odpowiedzi na to.

Odpowiedział 15/11/2009 o 02:21
źródło użytkownik

głosy
1

Kiedy patrzę w aplikacji iPod, wydaje mi się, że widok TabBarController nie otrzymuje ani w żaden sposób modyfikowane. Myślę, że jest po prostu przejście na blaknięcie między widokiem TabBarController i widok CoverFlow.

Gdybym był tobą, chciałbym spróbować (nie wiem, czy to może działać) z kontrolerem CoverFlow z jego widok wyświetlany na górze zdaniem TabBarController użytkownika. Jeśli uniemożliwiałoby TabBarController z autorotating swój pogląd, ale w tym momencie chciałbym zanikanie swój pogląd i zanikać w widoku CoverFlow, co byłoby tylko krajobraz.

Nie wiem, czy StatusBar miałby właściwego zachowania, a ja niech wiele szczegółów, aby uporządkować, ale w każdym razie myślę, że będzie to miły pomysł, aby mieć dwa oddzielne kontrolery, jeden pokazał w krajobrazie, druga (im zakładkami) w orientacji pionowej.

Nadzieję, że pomoże.

Odpowiedział 14/11/2009 o 10:24
źródło użytkownik

głosy
1

Ok, to jak daleko mogę umieścić ten do pracy:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
                                duration:(NSTimeInterval)duration {
    if (self.landscape) {
        if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
        {
            self.view = self.portrait;
            //self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(360));
        }
        else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)
        {
            self.view = self.landscape;
            //self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
        }
        else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
        {
            self.view = self.landscape;
            //self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
        }
        else
        {
            self.view = self.portrait;
            //self.view.transform =  CGAffineTransformMakeRotation(degreesToRadian(-180));
        }
    }
}

Teraz, w AppDelegate:

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
    [UIView beginAnimations:nil context:NULL];  

    if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight)
    {
        [tabBarController.view setAlpha:0.0];
        [tabBarController.view removeFromSuperview];

        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 
    } else {
        [tabBarController.view setAlpha:1.0];
        [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];      
    }
    [UIView commitAnimations];  
}

Ale potem jak ustawić aktualny pogląd i jak przywrócić umieszczenie zakładek?

Odpowiedział 11/02/2009 o 21:23
źródło użytkownik

głosy
1

Można ukryć pasek stanu wywołując

setStatusBarHidden:(BOOL)

na odniesienie UIApplication, jak tak.

- (void)applicationDidFinishLaunching:(UIApplication *)application {

[application setStatusBarHidden:YES];

}

Aby pozbyć się Zakładki mogą dokonać wylot odniesienie w konstruktorze Interface do kodu i wywołania

[myUITabBar removeFromSuperview];

To może działać, choć nie testowałem go, jak w przypadku innych pytań, nie jestem w 100%, że wcześniej nie rozwiązane problemy.

Odpowiedział 11/02/2009 o 13:20
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more