Έχω ένα παρόμοιο πρόβλημα.
Έχω ένα παιχνίδι που εργάζονται σε οριζόντιο προσανατολισμό (και τα δύο αριστερά και δεξιά του τοπίου).
Για να διαχειριστείτε μια εφαρμογή πολλαπλών θέα μπορώ να χρησιμοποιήσω ένα UIviewController ρίζα, δηλαδή μια εικονική UIViewcontroller με UIView που δεν κάνει τίποτα. Στη συνέχεια προσθέστε όλα τα άλλα UIView σε αυτό ως δευτερεύουσας προβολής.
Κατά την έναρξη της εφαρμογής, ο εξομοιωτής περιστρέφεται γρήγορα σε ένα κατακόρυφο προσανατολισμό, και παίρνω κάθε μία από τις απόψεις μου με αυτό το ακίνητο πλαίσιο μοιάζοντας (0, -80.320.480). Αυτό έχει ως αποτέλεσμα την προβολή που ψαλιδίζεται από έναν 160 Χ 320 ορθογώνιο στη δεξιά πλευρά.
Έχω παρατηρήσει ότι η - shouldAutorotateToInterfaceOrientation: μέθοδος της κάθε δευτερεύουσας προβολής καλείται μόνο μία φορά, και αυτό συμβαίνει όταν προστίθεται στην προβολή της ρίζας. Αργότερα, κατά την περιστροφή της συσκευής, μόνο η θέα ρίζα παίρνει η μέθοδος είναι ονομάζεται.
Όπως ήταν αναμενόμενο, κάθε ένα από τα - willAnimate * μέθοδοι κλήσεις αποστέλλονται μόνο στην προβολή ρίζα, έτσι, καθορίζοντας οποιαδήποτε από αυτές τις μεθόδους subviews είναι άσκοπο.
Αυτές οι μέθοδοι καλούνται κάθε φορά ο προσανατολισμός έχει αλλάξει σε έναν προσανατολισμό αποδεκτές από την - shouldAutorotateToInterfaceOrientation: μέθοδος. έτσι σκέφτηκα ότι θα μπορούσα να chnage ιδιοκτησίας πλαίσιο subviews μου από εκεί.
Για να επιτευχθεί αυτό, ορίζεται η ακόλουθη μέθοδο στην τάξη rootViewController μου:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
subview1_ViewController.view.frame = CGRectMake(0,0,480,320);
subview2_ViewController.view.frame = CGRectMake(0,0,480,320);
...
}
Δεν καταλαβαίνω γιατί η ιδιοκτησία πλαίσιο δεν ενημερώνεται, αλλά ξέρω ότι αυτή η λύση λειτουργεί.
Η ελπίδα αυτό βοηθά ....