iPhone app σε λειτουργία τοπίο, 2008 συστήματα

ψήφοι
88

Σημείωση: αυτή η ερώτηση είναι από το 2008 και τώρα είναι μόνο ιστορικό ενδιαφέρον.


Ποιος είναι ο καλύτερος τρόπος για να δημιουργήσετε μια εφαρμογή iPhone που τρέχει σε κατάσταση λειτουργίας του τοπίου από την αρχή, ανεξάρτητα από τη θέση της συσκευής;

Τόσο προγραμματισμού και χρησιμοποιώντας το Interface Builder.

Δημοσιεύθηκε 02/08/2008 στις 11:47
πηγή χρήστη
Σε άλλες γλώσσες...                            


8 απαντήσεις

ψήφοι
46

Ιστορική απάντηση μόνο. Θεαματικά από την ημερομηνία:

Παρακαλώ σημειώστε ότι αυτή η απάντηση είναι πλέον εξαιρετικά ξεπερασμένο.

Αυτή η θέση είναι μόνο μια ιστορική περιέργεια .


Συναρπαστικά νέα! Όπως ανακαλύφθηκε από τον Andrew παρακάτω, το πρόβλημα αυτό έχει καθοριστεί από την Apple στο 4.0+.

Φαίνεται ότι δεν είναι πλέον απαραίτητο να αναγκάσει το μέγεθος της προβολής σε κάθε άποψη, και το συγκεκριμένο σοβαρό πρόβλημα του τοπίου «μόνο εργασίας την πρώτη φορά» έχει επιλυθεί.

Από τον Απρίλιο του 2011, δεν είναι δυνατόν να ελεγχθεί ή ακόμα και την κατασκευή οτιδήποτε κάτω από 4,0, οπότε το ερώτημα είναι καθαρά μια ιστορική περιέργεια. Είναι απίστευτο το πόσο πολύ κόπο προκάλεσε προγραμματιστές για τόσο πολύ καιρό!


Εδώ είναι η αρχική συζήτηση και λύση. Αυτό είναι εντελώς άσχετο τώρα, καθώς τα συστήματα αυτά δεν είναι ακόμη λειτουργική.


Είναι εξαιρετικά δύσκολο να γίνει πλήρως αυτό το έργο - υπάρχουν τουλάχιστον τρία προβλήματα / bugs στο παιχνίδι.

δοκιμάστε αυτό .. σχεδιασμό διεπαφής οικοδόμος τοπίου

Σημειώνεται ιδιαίτερα ότι εκεί που λέει «και θα πρέπει να χρησιμοποιήσετε shouldAutorotateToInterfaceOrientation σωστά παντού» σημαίνει παντού, όλα σε πλήρη οθόνη απόψεις σας.

Η ελπίδα αυτό βοηθά σε αυτό τον εφιάλτη!

Μια σημαντική υπενθύμιση του ΕΠΙΠΛΕΟΝ γνωστό πρόβλημα στο χέρι εδώ: αν προσπαθείτε να ανταλλάξουν μεταξύ ΠΕΡΙΣΣΟΤΕΡΕΣ ΑΠΟ ΜΙΑ άποψη (όλο το τοπίο), απλά δεν ΛΕΙΤΟΥΡΓΕΙ . Είναι σημαντικό να το θυμόμαστε αυτό ή θα σπαταλήσετε ημέρες σχετικά με το πρόβλημα. Είναι κυριολεκτικά δεν είναι δυνατή. Πρόκειται για το μεγαλύτερο ανοιχτό, γνωστό bug στην πλατφόρμα iOS. Δεν υπάρχει κυριολεκτικά κανένας τρόπος για να κάνει το υλικό να κάνει την δεύτερη άποψη φορτώνετε, να είναι το τοπίο. Το ενοχλητικό, αλλά απλή λύση, και τι πρέπει να κάνετε, είναι να έχουμε μια τετριμμένη κύριο UIViewController που δεν κάνει τίποτα, αλλά κάθονται εκεί και σας επιτρέπουν να αλλάζετε μεταξύ τις απόψεις σας.

Με άλλα λόγια, το iOS, λόγω ενός μεγάλου bug γνωρίζουν:

[window addSubview:happyThing.view];
[window makeKeyAndVisible];

Μπορείτε να το κάνετε αυτό μόνο μία φορά . Αργότερα, εάν προσπαθήσετε να αφαιρέσετε happyThing.view, και αντί να βάλει εκεί newThing.view, ΔΕΝ ΛΕΙΤΟΥΡΓΕΙ - και αυτό είναι αυτό. Το μηχάνημα δεν πρόκειται ποτέ να περιστρέψετε την προβολή με το τοπίο. Δεν υπάρχει λύση τέχνασμα, ακόμη και η Apple δεν μπορεί να λειτουργήσει. Η λύση θα πρέπει να υιοθετήσει έχει μια συνολική UIViewController που κάθεται απλά εκεί και απλά κρατά διάφορες απόψεις σας (happyThing, newThing, κλπ). Η ελπίδα αυτό βοηθά!

Απαντήθηκε 27/03/2010 στις 22:13
πηγή χρήστη

ψήφοι
40

Από το Apple Dev Ιστοσελίδα:

Για να ξεκινήσετε την αίτησή σας σε κατάσταση λειτουργίας του τοπίου, έτσι ώστε η γραμμή κατάστασης είναι στην κατάλληλη θέση άμεσα, να επεξεργαστείτε info.plist το αρχείο σας για να προσθέσετε το κλειδί UIInterfaceOrientation με την κατάλληλη τιμή (UIInterfaceOrientationLandscapeRight ή UIInterfaceOrientationLandscapeLeft), όπως φαίνεται στο Χρηματιστήριο 2.

Καταχώρηση 2: Ξεκινώντας την αίτησή σας στον τρόπο τοπίων

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
Απαντήθηκε 31/08/2008 στις 15:38
πηγή χρήστη

ψήφοι
27

Σύνοψη και ενοποίηση όλων των θέσεων, μετά από έλεγχο ο ίδιος? ελέγξτε την ενημερωμένη έκδοση για 4.x, 5.x παρακάτω.

Από 3.2 δεν μπορείτε να αλλάξετε τον προσανατολισμό μιας εφαρμογής που εκτελείται από τον κώδικα.

Αλλά μπορείτε να ξεκινήσετε μια εφαρμογή με ένα σταθερό προσανατολισμό, αν και κάτι τέτοιο δεν είναι εύκολο.

Δοκιμάστε με αυτή τη συνταγή:

  1. ορίσετε τον προσανατολισμό σας UISupportedInterfaceOrientationsστο Info.plistαρχείο
  2. στο παράθυρό σας ορίσει ένα «ελεγκτή θέα βάση» 480x320. Κάθε άλλη άποψη θα προστεθεί ως δευτερεύουσας προβολής στην προβολή της.
  3. σε όλους τους ελεγκτές άποψη που την shouldAutorotateToInterfaceOrientation:μέθοδο (για να επιστρέψει την ίδια τιμή που ορίζεται στο plist, φυσικά)
  4. σε όλους τους ελεγκτές άποψη που μια άποψη φόντο με

    self.view.frame = CGRectMake(0, 0, 480, 320)

    στην viewDidLoadμέθοδο.

Ενημέρωση (iOS 4.x, 5.x) : ο οδηγός προγραμματισμού Apple iOS App έχει «Εκκίνηση σε λειτουργία Τοπίο» παράγραφο στο κεφάλαιο «Advanced App Κόλπα».

Βιβλιογραφικές αναφορές:

Απαντήθηκε 07/05/2010 στις 12:02
πηγή χρήστη

ψήφοι
7

Πρώτα ορίζεται στο info.plist

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>

Στη συνέχεια έβαλα αυτόν τον κώδικα στο applicationDidFinishLaunching:

CGAffineTransform rotate = CGAffineTransformMakeRotation(1.57079633);
[window setTransform:rotate];

CGRect contentRect = CGRectMake(0, 0, 480, 320); 
window.bounds = contentRect; 
[window setCenter:CGPointMake(160.0f, 240.0f)]; 

Με αυτό τον τρόπο μπορώ να εργαστούν για την προβολή στο Interface Builder σε λειτουργία τοπίο.

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

ψήφοι
6

απάντηση sasb και michaelpryor φαίνεται να είναι σωστή, αλλά αν δεν λειτουργεί για σας, δοκιμάστε αυτή την εναλλακτική λύση:

- (void)applicationDidFinishLaunchingUIApplication *)application {
    application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;
}

Ή αυτό:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

Ή αυτό:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

Μπορεί επίσης να χρειαστεί να καλέσετε window makeKeyAndVisible;πρώτα.

Λίγα συνδέσεις: Ανάπτυξη σε λειτουργία τοπίο , το iPhone SDK: Πώς να αναγκάσει λειτουργία Τοπίο μόνο;

@Robert: ανατρέξτε στο The iPhone SDK, NDA, και Υπερχείλιση στοίβας .

Απαντήθηκε 31/08/2008 στις 16:01
πηγή χρήστη

ψήφοι
5

Είμαι έκπληκτος κανείς δεν έχει καταλήξει σε αυτήν την απάντηση ακόμα:

Σε όλες τις δοκιμές μου, όταν ένας απορρίπτοντας μια τροπική ελεγκτή άποψη προτιμώμενο προσανατολισμό του ελεγκτή άποψη γονέα που το shouldAutorotateToInterfaceOrientationέχει τιμηθεί ακόμη και όταν μέρος ενός UINavigationController. Έτσι, η λύση είναι απλή:

Δημιουργήστε μια εικονική UIViewController με UIImageView για φόντο. Ρυθμίστε την εικόνα με την εικόνα default.png εφαρμογή σας χρησιμοποιεί κατά την εκκίνηση.

Όταν viewWillAppearπαίρνει ονομάζεται σε ελεγκτή προβολή ρίζα σας, απλά να παρουσιάσει την εικονική ελεγκτή προβολή χωρίς κινούμενα σχέδια.

όταν viewDidAppearπαίρνει ονομάζεται στην εικονική ελεγκτή την άποψή σας, να απορρίψει τον ελεγκτή άποψη με ένα ωραίο σταυρό διαλυθεί animation.

Δεν είναι μόνο αυτό το έργο, αλλά φαίνεται καλό! BTW, απλά για διευκρίνιση κάνω την άποψη ρίζα ελεγκτή viewWillAppearως εξής:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}
Απαντήθηκε 27/11/2010 στις 08:38
πηγή χρήστη

ψήφοι
4

Η πιο πρόσφατη Οδηγός προγραμματισμού iPhone OS έχει ένα πλήρες τμήμα σχετικά με αυτό, με το δείγμα κώδικα. Είμαι βέβαιος ότι αυτό είναι μια πρόσφατη προσθήκη, οπότε ίσως να το χάσει. Εξηγεί όλες τις προϋποθέσεις που πρέπει να πληρούν? βασικα...

  • ορίσετε τις info.plist ιδιότητες (αυτό αλλάζει την θέση της γραμμής κατάστασης, αλλά δεν είναι η άποψη)
  • περιστρέψετε την άποψή σας με το χέρι γύρω από το κέντρο της, είτε UIViewController viewDidLoad σας: μέθοδο ή applicationDidFinishLaunching σας: Μέθοδος ή να εφαρμόσουν αυτόματη περιστροφή ( «Autoresizing συμπεριφορές», σελίδα 124)

Ψάξτε για «Έναρξη σε λειτουργία Τοπίο», σελίδα 102.

Απαντήθηκε 04/09/2008 στις 22:57
πηγή χρήστη

ψήφοι
3

Δείτε αυτή την απάντηση: Λειτουργία Τοπίο ΜΟΝΟ για το iPhone ή το iPad

  1. προσθέστε προσανατολισμό προς plist
  2. shouldAutorotateToInterfaceOrientation = ΝΑΙ σε όλα τα αρχεία

Παρά το γεγονός ότι αν χρησιμοποιείτε μικτές καταστάσεις, ίσως να είναι σε καλύτερη θέση με

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
Απαντήθηκε 06/03/2011 στις 08:56
πηγή χρήστη

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