Nasıl döndür görünüm yatay bir tabbar uygulamasında

oy
7

Bir tabbar tabanlı uygulaması vardır.

Ben 2 manzaraları, portre tane ve Interface Builder başka manzara modu kurmak.

Şimdi, iPod App gibi bir şey istiyorum. Ben yatay görünüm tam ekran olarak istiyorum, ve tabbar & Durum çubuğunu gizlemek.

Bunun esasını çalışmayı yapmak:

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

Ama bütün dağınık çalışır. yatay görünüm doğru alanı doldurmak değil ve kontroller ilk desingned olarak diferent, yanlış yerlerde bulunan.

Ayrıca, hala her şeyi gizlemek için bir yol bulmuş değil ...

Oluştur 10/02/2009 saat 22:59
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
5

Apple'ın "AlternateViews" örnek kod bakın.

Temel fikir bildirimler ile cihazın fiziksel yönünü algılar ve ardından "modally" yeni bir görünüm denetleyicisi etkinleştirmek ve tam ekran rica ediyoruz olmasıdır. Sen bildirimleri ile manuel olarak bütün bunları yapıyorsun beri shouldAutorotate ... sadece bir yönlendirme için EVET dönmek suretiyle arayüz rotasyonunu devre dışı bırakın. Fiziksel yönünü değiştirdiğinizde, modal görünümü kontrolörü takdim veya ilişiği kesilir ya.

Cevap 30/11/2009 saat 01:47
kaynak kullanıcı

oy
1

Bir sekme çubuğu öğesi yatay görünüm tam ekrana (durum çubuğu, hiçbir sekme çubuğu) onları almak ve daha sonra geri gelmek istiyorum kodlayıcıların adil sayıda var gibi.

Bu Apple geliştiricileri forumunda gerçekten mümkün olup olmadığı hakkında bir soruşturma gönderdiniz, ancak henüz bir cevap olmadı.

Bu neden zor? Henüz çevrimiçi bulduk kimse bu açık bir cevabı vardır (bazı oldukça bariz şeylerin zor olmamalı gibi üzgün, bir yeni soru? Öyle görünüyor).

Cevap 15/11/2009 saat 02:21
kaynak kullanıcı

oy
1

Ben iPod uygulaması baktığımızda, TabBarController görünümü değiştirilir veya herhangi bir şekilde değiştirilmez geliyor bana. Ben TabBarController görünümü ve CoverFlow görünümü arasında sadece bir geçiş fade olduğunu düşünüyorum.

Yerinde olsam onun bakış TabBarController bakış üstünde görüntülenen, ben, bir CoverFlow kontrolörü ile (bu işe yarayabilecek emin değilim) çalışacaktı. Eğer onun görünümünü autorotating gelen TabBarController önleyecek, ama o anda ben onun görünümünü dışarı kaybolup gideceğini ve yalnızca yatay olacağını CoverFlow görünümünde, solmaya.

statusBar uygun bir davranış olurdu eğer bilmiyorum, ben ayrıntıları çok dışarı sıralamak için izin, ama iki ayrı denetleyicileri için güzel bir fikir olacağını düşünüyorum her durumda, bir manzara gösterdi portrede (TabBar) diğer.

size yardımcı olacağını umuyoruz.

Cevap 14/11/2009 saat 10:24
kaynak kullanıcı

oy
1

Tamam, bu bildiğim kadarıyla işe koymak geçerli:

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

Şimdi, AppDelegate içinde:

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

Ama sonra ne kadar geçerli görünümü ayarlamak ve tabbar geri nasıl?

Cevap 11/02/2009 saat 21:23
kaynak kullanıcı

oy
1

Sen arayarak durum çubuğunu gizleyebilirsiniz

setStatusBarHidden:(BOOL)

Bunun gibi bir UIApplication referans, ile.

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

[application setStatusBarHidden:YES];

}

tabBar kurtulmak için size kodu ve çağrı Arayüz Oluşturucu bir referans çıkış yapabilir

[myUITabBar removeFromSuperview];

Ben, diğer sorulara gelince, ben% 100 değilim, aCoolFunction önce sorunları ele değil ettikten rağmen Yani, işe yarayabilir.

Cevap 11/02/2009 saat 13:20
kaynak kullanıcı

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