iPhone app fekvő módban, 2008 rendszerek

szavazat
88

Megjegyzés: ez a kérdés 2008-ban és most csak történelmi érdeklődés.


Mi a legjobb módja annak, hogy hozzon létre egy iPhone alkalmazás fut fekvő módban a kezdetektől, függetlenül attól, hogy a helyzet az eszközt?

Mindkét programozott és az Interface Builder.

A kérdést 02/08/2008 11:47
a forrás felhasználó
Más nyelveken...                            


8 válasz

szavazat
46

Történelmi válasz csak. Látványosan elavult:

Felhívjuk figyelmét, hogy ez a válasz ma rendkívül elavult.

Ez az üzenet csak történelmi érdekesség .


Izgalmas hír! Amint felfedezte Andrew alatti, ez a probléma javításra került az Apple 4.0+.

Úgy tűnik, hogy már nem kell kényszeríteni a méret a nézet minden nézet, és az adott komoly probléma a táj „csak akkor működik, az első alkalommal” megoldódott.

Mivel április 2011 nem lehet tesztelni, vagy akár építeni semmit 4,0 alá, így a kérdés pusztán egy történelmi kuriózum. Ez hihetetlen, hogy mennyi bajt okozott a fejlesztők olyan sokáig!


Itt van az eredeti vita és a megoldás. Ez teljesen lényegtelen most, mivel ezek a rendszerek nem is működtethető.


Rendkívül nehéz, hogy ezt a munkát teljes egészében - még legalább három probléma / hiba a játékban.

próbáld ezt .. felületépítő kerttervezés

Különösen kiemelendő, hogy ha azt mondja „és meg kell használni shouldAutorotateToInterfaceOrientation megfelelően mindenütt” ez azt jelenti, mindenhol, minden fullscreen nézeteit.

Remélem segít ebben rémálom!

Fontos emlékeztető a kiegészítő jól ismert probléma kéznél van: ha megpróbálják közötti váltáshoz TÖBB nézet (összes táj), IT egyszerűen nem működik . Elengedhetetlen, hogy emlékezzen erre, vagy akkor pazarolja nappal a problémát. Ez a szó nem lehetséges. Ez a legnagyobb, nyílt, ismert, hibák az iOS platform. Nincs szó semmilyen módon, hogy a hardver, hogy a második nézet töltsön be, legyen a táj. A bosszantó, de egyszerű megoldás, és mit kell tennie, hogy egy triviális mester UIViewController hogy nem csinál semmit, de ott ülni, és segítségével válthat a nézetek.

Más szóval, az iOS miatt jelentős know hiba:

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

Megteheti, hogy csak egyszer . Később, ha megpróbálja eltávolítani happyThing.view, és ahelyett, tedd oda newThing.view, hogy nem működik - és ennyi. A gép soha nem fog forogni a céllal, hogy a táj. Nincs trükk fix, még az Apple nem tudja, hogy működik. A megoldás akkor el kell fogadnia az, amelynek teljes UIViewController hogy egyszerűen ül ott, és csak tartja a különböző nézetek (happyThing, newThing, stb.) Remélem ez segít!

Válaszolt 27/03/2010 22:13
a forrás felhasználó

szavazat
40

Az Apple Dev Oldal:

Ahhoz, hogy indítsa el a kérelmet a tájkép módban, hogy a status bar van a megfelelő helyzetben azonnal, módosítsa a info.plist fájlt hozzá a UIInterfaceOrientation kulcsot a megfelelő értéket (UIInterfaceOrientationLandscapeRight vagy UIInterfaceOrientationLandscapeLeft), amint azt a 2. listában.

2. lista: az alkalmazás megkezdése fekvő módban

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
Válaszolt 31/08/2008 15:38
a forrás felhasználó

szavazat
27

Összefoglalás és az integráció az összes üzenetét, a vizsgálat után magam; ellenőrizze a frissítés 4.x, 5.x alább.

Mivel a 3.2 nem tudja megváltoztatni a tájolást egy futó alkalmazás kódját.

De akkor, amikor egy alkalmazás egy rögzített tájolás is, habár ez nem egyszerű.

Próbáld meg ezt a receptet:

  1. állítsa be az orientáció UISupportedInterfaceOrientationsa Info.plistfájl
  2. az ablak meg egy 480x320 „alap nézetvezérlőben”. Minden más nézet ki mint egy subview álláspontjához.
  3. minden néző vezérlők létre a shouldAutorotateToInterfaceOrientation:módszer (a vissza ugyanazt az értéket határozott meg a plist, természetesen)
  4. minden néző vezérlők háttérképet nézet

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

    A viewDidLoadmódszer.

Update (iOS 4.x, 5.x) : Az Apple iOS App programozási útmutató egy "indítása fekvő módban" bekezdést a "Advanced App Trükkök" fejezetben.

Irodalom:

Válaszolt 07/05/2010 12:02
a forrás felhasználó

szavazat
7

Először meg info.plist

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

aztán fel ezt a kódot 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)]; 

Így tudok dolgozni a nézetet Interface Builder fekvő módban.

Válaszolt 20/11/2009 21:58
a forrás felhasználó

szavazat
6

sasb és michaelpryor válasza megfelelőnek tűnik, de ha ez nem működik az Ön számára, próbálja ki ezt az alternatív:

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

Vagy ezt:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

Vagy ezt:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

Azt is meg kell hívni window makeKeyAndVisible;az első.

Néhány link: Fejlődő fekvő módban , iPhone SDK: Hogyan kell kényszeríteni Fekvő módban?

@Robert: lásd Az iPhone SDK, NFÜ, és Veremtúlcsordulás .

Válaszolt 31/08/2008 16:01
a forrás felhasználó

szavazat
5

Meglep senki nem jött ki ez a válasz még:

Minden én vizsgálatokat, ha a felmondást modális nézetvezérlőben a szülő nézetvezérlőben preferált orientáció meghatározott shouldAutorotateToInterfaceOrientationmegtiszteltetés akkor is, ha egy részét UINavigationController. Tehát a megoldás erre egyszerű:

Hozzon létre egy dummy UIViewController egy UIImageView a háttérben. Állítsa be a képet, hogy a default.png kép alkalmazásod indításkor.

Amikor viewWillAppearhívódik a gyökér nézetvezérlőben, csak bemutatni a bábu nézetvezérlőben nélkül animáció.

amikor viewDidAppearhívódik a dummy nézetvezérlőben utasítsa nézetvezérlőben egy szép kereszt oldódnak animáció.

Nem csak ez a munka, de jól néz ki! BTW, csak a pontosítás tennem gyökérnézetéhez vezérlő viewWillAppear, mint ez:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}
Válaszolt 27/11/2010 08:38
a forrás felhasználó

szavazat
4

A legújabb iPhone OS programozási útmutató egy teljes fejezetet ennek minta kódot. Biztos vagyok benne, hogy ez egy újabb kívül, így talán ez kimaradt. Ez magyarázza a feltételeket meg kell felelniük; alapvetően...

  • állítsa be a info.plist tulajdonságait (ez megváltoztatja a pozícióját a status bar, de nem a néző)
  • forgatni a nézetet manuálisan a középpontja körül, az akár a UIViewController viewDidLoad: módszer vagy az applicationDidFinishLaunching: módszer vagy végrehajtja az automatikus forgatás ( „Autoresizing viselkedés”, 124. oldal)

Keresse meg a „indítása fekvő módban”, 102. oldal.

Válaszolt 04/09/2008 22:57
a forrás felhasználó

szavazat
3

Lásd ezt a választ: Tájkép mód csak iPhone vagy iPad

  1. add orientáció PLIST
  2. shouldAutorotateToInterfaceOrientation = YES összes fájl

Bár ha használ vegyes üzemmódban, akkor lehet, hogy jobb a

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
Válaszolt 06/03/2011 08:56
a forrás felhasználó

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