app iPhone v režimu na šířku, systémy 2008

hlasů
88

Poznámka: Tato otázka je od roku 2008 a nyní je pouze historické památky.


Jaký je nejlepší způsob, jak vytvořit aplikaci pro iPhone, která se spouští v režimu na šířku od začátku, bez ohledu na polohu zařízení?

Oba programově a použití Tvůrce rozhraní.

Položena 02/08/2008 v 11:47
zdroj uživatelem
V jiných jazycích...                            


8 odpovědí

hlasů
46

Pouze historická odpověď. Okázale zastaralý:

Upozorňujeme, že tato odpověď je nyní velmi zastaralý.

Tento příspěvek je pouze historická kuriozita .


Skvělá zpráva! Jak zjistila Andrew níže, tento problém byl vyřešen Apple v verze 4.0 a vyšší.

Mohlo by se zdát, že již není třeba nutit velikost zobrazení na každém pohledu a konkrétní vážný problém krajiny „jen pracuje na prvním místě“ byl vyřešen.

Jak dubna 2011, není možné testovat, nebo dokonce vytvořit něco nižší než 4,0, takže otázka je čistě historická kuriozita. Je neuvěřitelné, jak mnoho problémů je způsobeno vývojáři tak dlouho!


Zde je původní diskusi a řešení. To je nyní zcela irelevantní, neboť tyto systémy nejsou ani funkční.


Je velmi obtížné, aby to fungovalo úplně - existují nejméně tři problémy / chyby ve hře.

zkusit to .. interface builder krajinářská architektura

Všimněte si zejména, že kde se říká, „a budete muset použít shouldAutorotateToInterfaceOrientation správně všude“ znamená to, že všude, všechny fullscreen zobrazení.

Doufám, že to pomůže v této noční můry!

Důležitou připomínkou dodatečného dobře známý problém v ruce zde: Pokud se snažíte přepínat mezi více než jedno zobrazení (vše na šířku), IT prostě nefunguje . Je velmi důležité mít na paměti to, nebo budete ztrácet dny na problém. Je doslova nemožné. Je to největší open, známá chyba na platformě iOS. Tam je doslova žádný způsob, jak hardware, aby druhý pohled načtení, bude terén. Otravné, ale jednoduché řešení, a to, co musíte udělat, je mít triviální hlavní UIViewController který nedělá nic jiného než sedět tam a vám umožní přepínat mezi vaše názory.

Jinými slovy, v iOS důvodu významného know chybu:

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

Můžete to udělat jen jednou . Později, když se pokusíte odstranit happyThing.view, a místo toho tam dal newThing.view, nefunguje to - a to je to. Stroj se nikdy otočit zobrazení na šířku. Neexistuje žádný trik fix, i Apple nemůže, aby to fungovalo. Řešením je nutné přijmout má celkovou UIViewController, že prostě sedí a jen drží své různé pohledy (happyThing, newThing, atd.) Doufám, že to pomůže!

Odpovězeno 27/03/2010 v 22:13
zdroj uživatelem

hlasů
40

Z Apple Dev stránek:

Pro spuštění aplikace v režimu na šířku tak, že stavový řádek je ve správné poloze hned, upravte souboru Info.plist přidat klíč UIInterfaceOrientation s příslušnou hodnotou (UIInterfaceOrientationLandscapeRight nebo UIInterfaceOrientationLandscapeLeft), jak je uvedeno v Výpis 2.

Výpis 2: Spuštění aplikace v režimu na šířku

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
Odpovězeno 31/08/2008 v 15:38
zdroj uživatelem

hlasů
27

Shrnutí a integrace ze všech míst, po otestování to sám; zkontrolovat aktualizace pro 4.x, 5.x níže.

Jak 3,2 nelze změnit orientaci běžící aplikace z kódu.

Ale můžete spustit aplikaci s pevnou orientaci, i když přitom to není jednoduché.

Zkuste s tímto receptem:

  1. nastavit orientaci UISupportedInterfaceOrientationsv Info.plistsouboru
  2. V okně definovat „kontroleru pohledu základny“ na 480x320. Každý jiný názor bude přidán jako subview k jeho názoru.
  3. Ve všech regulátorů pohledu nastavit shouldAutorotateToInterfaceOrientation:metodu (vrátit stejnou hodnotu, kterou jste definovali v plist, samozřejmě)
  4. Ve všech regulátorů zobrazení nastaveno zobrazení pozadí s

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

    v viewDidLoadmetodě.

Update (iOS 4.x, 5.x) : Programovací příručka Apple iOS App má „Spuštění v režimu na šířku“ odstavec v kapitole „Advanced App triky“.

Reference:

Odpovězeno 07/05/2010 v 12:02
zdroj uživatelem

hlasů
7

Nejprve jsem nastavit Info.plist

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

Pak jsem dal tento kód 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)]; 

Tento způsob, jak mohu pracovat na pohledu v Interface Builder v režimu na šířku.

Odpovězeno 20/11/2009 v 21:58
zdroj uživatelem

hlasů
6

sasb je a michaelpryor odpověď se zdá být v pořádku, ale pokud to nefunguje, zkuste tuto alternativu:

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

Nebo tohle:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

Nebo tohle:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

Můžete také muset zavolat window makeKeyAndVisible;jako první.

Několik odkazů: Vývoj v režimu na šířku , iPhone SDK: Jak vynutit pouze v režimu na šířku?

@Robert: viz The iPhone SDK, NP a přetečení zásobníku .

Odpovězeno 31/08/2008 v 16:01
zdroj uživatelem

hlasů
5

Divím se, že nikdo přijít s touto odpovědí přesto:

Ve všech mých testů, kdy byla zamítnuta modální ovladač pohled výhodná orientace na nadřízeném pohledu regulátoru nastavit v shouldAutorotateToInterfaceOrientationse ctí, i když část UINavigationController. Takže řešení je jednoduché:

Vytvořit fiktivní UIViewController s UIImageView pro pozadí. Nastavit obrázek Default.png obrázek vaše aplikace používá při spuštění.

Když viewWillAppearse zavolá v kořenové pohled řadič, jen představit fiktivní regulátor s názorem bez animace.

když viewDidAppearse zavolá v fiktivní kontroleru pohledu, zamítl regulátor pohled s pěkným křížem rozpustit animace.

Nejen, že to funguje, ale vypadá to dobře! BTW, jen pro upřesnění i do kořenového pohled kontrolora viewWillAppear, jako je tento:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}
Odpovězeno 27/11/2010 v 08:38
zdroj uživatelem

hlasů
4

Nejnovější Programming Guide iPhone OS má plnou část na toto téma, s ukázkový kód. Jsem si jist, že to je nejnovější přírůstek, takže možná to uniklo. To vysvětluje všechny podmínky, které musí splnit; v podstatě...

  • nastavit Info.plist vlastnosti (to změní pozici na stavovém řádku, ale ne pohled)
  • otočit zobrazení ručně kolem svého středu, a to buď na vaší UIViewController viewDidLoad: metoda nebo vaše applicationDidFinishLaunching: metoda nebo provést automatické otáčení ( „automatickém nastavení chování“, strana 124)

Podívejte se na „Spuštění v režimu na šířku“, strana 102.

Odpovězeno 04/09/2008 v 22:57
zdroj uživatelem

hlasů
3

Viz tuto odpověď: na šířku pouze pro iPhone nebo iPad

  1. přidat orientaci PLIST
  2. shouldAutorotateToInterfaceOrientation = YES ve všech souborech

I když, pokud používáte smíšené režimy, ty by mohly být lépe s

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
Odpovězeno 06/03/2011 v 08:56
zdroj uživatelem

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