Πώς περιστροφή θέα στο τοπίο σε μια εφαρμογή Tabbar

ψήφοι
7

Έχω ένα Tabbar εφαρμογή που βασίζεται.

Χτίζω 2 εμφανίσεις, ένα στο πορτρέτο και το άλλο στο τοπίο λειτουργία της Builder Interface.

Τώρα, θέλω κάτι σαν το iPod App. Θέλω να το τοπίο να είναι σε πλήρη οθόνη, και να κρύψει το Tabbar και τη γραμμή κατάστασης.

Κάνω για να λειτουργήσει το βασικό αυτό:

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

Αλλά όλα δουλεύουν βρώμικο. Η θέα του τοπίου δεν συμπληρώσετε σωστά την περιοχή και οι έλεγχοι βρίσκονται σε λάθος θέσεις, diferent όπως desingned πρώτο.

Επίσης, ακόμα δεν βρει έναν τρόπο για να κρύψει ό, τι άλλο ...

Δημοσιεύθηκε 10/02/2009 στις 22:59
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
5

Κοιτάξτε «AlternateViews» δείγμα κώδικα της Apple.

Η βασική ιδέα είναι ότι μπορείτε να εντοπίσετε το φυσικό προσανατολισμό της συσκευής με τις ειδοποιήσεις, και στη συνέχεια να ενεργοποιήσει ένα νέο χειριστήριο προβολή «στους τρόπους» και το έχουν ζητήσει την πλήρη οθόνη. Μπορείτε να απενεργοποιήσετε την περιστροφή περιβάλλον, έχοντας shouldAutorotate ... επιστροφή ΝΑΙ μόνο για έναν προσανατολισμό, από τη στιγμή που τα κάνουν όλα αυτά με το χέρι με ειδοποιήσεις. Όταν αλλάζετε το φυσικό προσανατολισμό, modal χειριστήριο άποψή σας, είτε παρουσιάζονται ή απορριφθεί.

Απαντήθηκε 30/11/2009 στις 01:47
πηγή χρήστη

ψήφοι
1

φαίνεται να είναι ένας ικανός αριθμός από προγραμματιστές που θέλουν να έχουν ένα στοιχείο μπάρα τους μεταφέρει σε μια πλήρη οθόνη τοπίο (καμία γραμμή κατάστασης, δεν μπάρα) και στη συνέχεια να επανέλθει εκεί.

Έχω δημοσιεύτηκε μια έρευνα σχετικά με το αν αυτό είναι όντως δυνατό στο φόρουμ προγραμματιστών της Apple, αλλά δεν έχουν ακόμη λάβει απάντηση.

Γιατί είναι αυτό το δύσκολο; (Συγγνώμη, μια ερώτηση newbie; Φαίνεται ότι κάποιοι μάλλον προφανή πράγματα δεν πρέπει να είναι δύσκολο) Κανείς δεν έχω βρει ακόμη σε απευθείας σύνδεση έχει μια σαφή απάντηση σε αυτό.

Απαντήθηκε 15/11/2009 στις 02:21
πηγή χρήστη

ψήφοι
1

Όταν κοιτάζω την εφαρμογή iPod, θεωρώ ότι η άποψη TabBarController δεν έχει αντικατασταθεί ή τροποποιηθεί με οποιονδήποτε τρόπο. Νομίζω ότι υπάρχει μόνο μια μετάβαση ξεθωριάζει μεταξύ της προβολής tabbarcontroller και την προβολή coverflow.

Αν ήμουν στη θέση σου, θα ήθελα να προσπαθήσω (δεν είναι σίγουρος αν αυτό θα μπορούσε να λειτουργήσει) με έναν ελεγκτή coverflow, με θέα του εμφανίζονται πάνω από την άποψη της tabBarController του. Αν θα αποτρέψει την tabBarController από autorotating την άποψή του, αλλά εκείνη τη στιγμή θα ήθελα να σβήσει την άποψή του και να σβήνουν κατά την άποψη coverflow, η οποία θα είναι μόνο το τοπίο.

Δεν ξέρω αν η γραμμή κατάστασης θα έχει σωστή συμπεριφορά, και άφησα πολλά στοιχεία για να διευθετήσουν το θέμα, αλλά σε κάθε περίπτωση νομίζω ότι θα ήταν μια καλή ιδέα να έχουμε δύο ξεχωριστές ελεγκτές, ένας έδειξε το τοπίο, η άλλη (η Tabbar) σε πορτρέτο.

Ελπίζουμε ότι θα σας βοηθήσει.

Απαντήθηκε 14/11/2009 στις 10:24
πηγή χρήστη

ψήφοι
1

Εντάξει, αυτό είναι όσο το έβαλα αυτό το έργο:

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

Τώρα, στο 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];  
}

Στη συνέχεια, όμως, πώς να ρυθμίσετε την τρέχουσα προβολή και πώς να αποκαταστήσει την Tabbar;

Απαντήθηκε 11/02/2009 στις 21:23
πηγή χρήστη

ψήφοι
1

Μπορείτε να αποκρύψετε τη γραμμή κατάστασης, καλώντας

setStatusBarHidden:(BOOL)

σε μια αναφορά UIApplication, όπως έτσι.

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

[application setStatusBarHidden:YES];

}

Για να απαλλαγείτε από το Tabbar μπορείτε να κάνετε μια διέξοδο αναφορά στο Interface Builder στον κώδικα και η κλήση σας

[myUITabBar removeFromSuperview];

Αυτό θα μπορούσε να λειτουργήσει, αν και δεν έχω δοκιμάσει, όπως και για τις άλλες ερωτήσεις, δεν είμαι 100%, αφού δεν αντιμετωπιστούν τα προβλήματα πριν.

Απαντήθηκε 11/02/2009 στις 13:20
πηγή χρήστη

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