Hogyan forgatása céljából táj egy tabbar app

szavazat
7

Van egy tabbar alapú alkalmazást.

Építek 2 megtekintés, egy álló és egy másik tájkép módban a Interface Builder.

Most akarok valamit, mint az iPod App. Szeretnék a táj nézet, hogy a teljes képernyős, és elrejteni a tabbar & állapotsorban.

Azt, hogy a munka az alapvető e:

- (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));
        }
    }
}

De minden működik rendetlen. A táj nézet nem megfelelően kitöltse a területet, és az ellenőrzések találhatók rossz helyeken diferent mint desingned először.

Továbbá, még mindig nem találtam a módját, hogy elrejtse minden mást ...

A kérdést 10/02/2009 22:59
a forrás felhasználó
Más nyelveken...                            


5 válasz

szavazat
5

Nézd meg az Apple „AlternateViews” minta kódot.

Az alapötlet az, hogy lehet felismerni a fizikai tájolása az eszköz az értesítéseket, majd aktiválja az új nézetvezérlőben „modális”, és azt kéri a teljes képernyőn. Letiltja felület forgatás, amelynek shouldAutorotate ... visszatér YES csak egy orientáció, mivel akkor mindezt manuálisan értesítéseket. Ha megváltoztatja a fizikai orientáció, a modális nézet vezérlő megfogalmazásra, illetve elutasítja.

Válaszolt 30/11/2009 01:47
a forrás felhasználó

szavazat
1

Úgy tűnik, hogy szép számmal programozóknak, akik szeretnék, hogy egy lapon bar elemet vigye a fekvő nézet teljes képernyőn (nincs állapotsor, nincs fül bar), majd jön vissza.

Már írt egy vizsgálatot arról, hogy ez valóban lehetséges az Apple fejlesztői fórum, de még nem volt válasz.

Miért van ez nehéz? (Bocs, egy kezdő kérdés? Úgy tűnik, néhány meglehetősen nyilvánvaló dolgokat nem lehet nehéz) Senki találtam még az online egyértelmű választ.

Válaszolt 15/11/2009 02:21
a forrás felhasználó

szavazat
1

Ha megnézem az iPod app, úgy tűnik számomra, hogy a TabBarController nézet nem cserélik vagy bármilyen módon. Azt gondoltuk, hogy csak elhalványul közötti átmenet tabbarcontroller látvány és a CoverFlow kilátás.

Ha a helyedben lennék, azt próbálja (nem biztos, hogy ez működhet) egy CoverFlow szabályozó, a megjelenő nézet tetején a tabBarController véleménye. Ha megakadályozná a tabBarController származó autorotating a nézetet, de abban a pillanatban én elhalványul álláspontját, és halványul a CoverFlow véli, ami táj csak.

Azt nem tudom, hogy a statusbar lenne a helyes viselkedést, és hagytam egy csomó részletek, hogy rendezni, de minden esetben azt hiszem, hogy lenne egy jó ötlet, hogy két különböző vezérlők, az egyik azt mutatta, a táj, a másik (a tabBar) álló.

Remélem, hogy segít.

Válaszolt 14/11/2009 10:24
a forrás felhasználó

szavazat
1

Ok, ez amennyire tettem, hogy ez működjön:

- (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));
        }
    }
}

Most, a 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];  
}

De akkor hogyan állítsa be az aktuális nézetet, és hogyan állítsa vissza a tabbar?

Válaszolt 11/02/2009 21:23
a forrás felhasználó

szavazat
1

Ön tudja elrejteni az állapotsorban meghívásával

setStatusBarHidden:(BOOL)

egy UIApplication referencia, így.

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

[application setStatusBarHidden:YES];

}

Ahhoz, hogy megszabaduljon a tabbar tudod, hogy a hivatkozás kivezetésének felületépítő a kódot, és hívás

[myUITabBar removeFromSuperview];

Lehet, hogy ez a munka, bár én még nem teszteltem, mint a többi kérdésre, nem vagyok 100%, mivel nem foglalkozik a problémák előtt.

Válaszolt 11/02/2009 13:20
a forrás felhasználó

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