Yatay modda 2008 sistemlerinde iPhone uygulaması

oy
88

Not: Bu soru 2008 ve şimdi sadece tarihi ilgi olduğunu.


cihazdan bağımsız konumu nedeniyle, baştan yatay modda çalışan bir iPhone uygulaması oluşturmak için en iyi yolu nedir?

Hem programlı ve Interface Builder kullanarak.

Oluştur 02/08/2008 saat 11:47
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
46

Tarihi cevabı sadece. Olağanüstü tarihi geçmiş:

Bu cevap derece artık güncel olduğuna dikkat edin.

Bu yazı olduğunu sadece tarihsel bir merak .


Heyecanlı haber! Aşağıda Andrew tarafından keşfedilen gibi, bu sorun 4.0+ Apple tarafından düzeltildi.

O her görünümde bakış boyutunu ve "sadece ilk çalışma süresinin" manzara spesifik ciddi bir sorun zorlamak için HAYIR artık gerekli değildir görünür çözüldü.

Nisan 2011 itibariyle, soru tamamen tarihi bir merakı böylece, 4.0'ın altında bir şey inşa hatta test etmek ya da mümkün değildir. O kadar uzun süre geliştiriciler ne kadar zorda inanılmaz!


Burada asıl tartışma ve çözümdür. Bu sistemler bile çalışabilen değil gibi bu şimdi tamamen alakasız.


Tamamen bu işi yapmak son derece zordur - oynayan en az üç sorunlar / hatalar vardır.

deneyin bu .. arayüz oluşturucu peyzaj tasarımı

Yazan yere o özellikle dikkat "ve düzgün her yerde shouldAutorotateToInterfaceOrientation kullanmak gerekir" , her yerde anlamı tüm tam ekran görünümleri.

Bu kabus olur Umut!

Burada el altında EK tanınmış problemin önemli bir hatırlatma: Eğer arasındaki takas çalışıyorsanız BİRDEN FAZLA görünümü (tüm yatay), BT sadece çalışmıyor . Bu çok önemlidir, bu hatırlamak veya problem üzerinde gün atık olacaktır. Tam anlamıyla MÜMKÜN DEĞİLDİR. Bu iOS platformunda büyük açık, bilinen, hatasıdır. Donanım Eğer peyzaj olmak, yük ikinci görünüm yapmak yapmak için hiçbir şekilde tam anlamıyla yoktur. Can sıkıcı ama basit bir çözüm ve ne yapması gerektiğini, orada oturup da o görünümleri arasında takas edelim ama hiçbir şey yapmaz önemsiz bir usta UIViewController olması.

Başka bir deyişle, çünkü büyük bir bilgi böcek iOS'ta:

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

Bunu sadece bir kez bunu yapabilir . Eğer happyThing.view kaldırmak ve bunun yerine orada newThing.view koymak çalışırsanız Daha sonra, BT DOESNT'İŞ - VE bu kadar. Makine yatay görünümü döndürmek asla. Hiçbir hile düzeltme bile Elma çalışması yapamaz yoktur. Eğer kabul etmesi gerekiyor geçici çözüm basit orada oturur genel UIViewController sahip ve sadece çeşitli görünümleri (happyThing, newThing, vs) tutar. Umarım yardımcı olur!

Cevap 27/03/2010 saat 22:13
kaynak kullanıcı

oy
40

Apple Dev Sitesinden:

Durum çubuğu hemen uygun pozisyonda olacak şekilde Liste 2'de gösterildiği gibi uygun değere (UIInterfaceOrientationLandscapeRight veya UIInterfaceOrientationLandscapeLeft) ile UIInterfaceOrientation anahtarı eklemek için Info.plist dosyasını düzenlemek, yatay modda uygulamayı başlatmak için.

Liste 2: yatay modda uygulamayı başlatma

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
Cevap 31/08/2008 saat 15:38
kaynak kullanıcı

oy
27

Tüm yayınlardaki Özeti ve entegrasyon, kendim test ettikten sonra; Aşağıdaki 4.x, 5.x için güncelleştirme kontrol edin.

3.2 itibariyle koddan bir çalışan uygulamanın yönünü değiştiremez.

yapıyor yani bu basit olmasa da Fakat, sabit doğrultulu bir uygulama başlatabilir.

Bu tarif ile deneyin:

  1. için yönünü ayarlamak UISupportedInterfaceOrientationsiçinde Info.plistdosyanın
  2. pencerenize bir 480x320 "taban görünümü denetleyicisi" tanımlar. Diğer her görünüm onun görünümüne bir subview eklenecektir.
  3. kurmak tüm görünüm denetleyicilerinde shouldAutorotateToInterfaceOrientation:yöntemi (tabii ki, Plist tanımlanan aynı değeri için)
  4. Tüm görünüm denetleyicileri içinde olan bir arka plan görünümünü ayarlamak

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

    içerisinde viewDidLoadyöntem.

Güncelleme (iOS 4.x, 5.x) : Apple iOS App Programlama Kılavuzu "Gelişmiş Uygulama Tricks" bölümünde bir "Yatay modda başlatma" paragrafı vardır.

Referanslar:

Cevap 07/05/2010 saat 12:02
kaynak kullanıcı

oy
7

Önce Info.plist ayarlanır

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

Sonra applicationDidFinishLaunching Bu kodu:

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)]; 

Ben yatay modda Interface Builder görünüm üzerinde çalışabilir Bu şekilde.

Cevap 20/11/2009 saat 21:58
kaynak kullanıcı

oy
6

sasb en ve michaelpryor cevabı doğru olarak görünüyorsa, ancak sizin için çalışıyor değilse, bu alternatifi denemek:

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

Ya da bu:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

Ya da bu:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

Ayrıca aramak gerekebilir window makeKeyAndVisible;ilk.

Birkaç bağlantılar: yatay modda Gelişmekte , iPhone SDK: Nasıl Peyzaj modu yalnızca zorlamak için?

@Robert: bakınız iPhone SDK, NDA ve yığın taşması .

Cevap 31/08/2008 saat 16:01
kaynak kullanıcı

oy
5

Hiç kimse henüz bu cevap geldi şaşırdım:

Tüm testlerde zaman bir ebeveyn görünümü kontrolörün tercih oryantasyon geçen bir modal görünümü kontrolörü görevden shouldAutorotateToInterfaceOrientationbir UINavigationController hatta zaman bölümünü onurlandırıldı. Yani bu çözüm basit:

Bir arka planı için bir UIImageView bir kukla UIViewController oluşturun. uygulama başlangıçta kullandığı Default.png görüntüye görüntüyü ayarlayın.

Ne zaman viewWillAppearkök görünümü denetleyicisi çağrılan, sadece animasyon olmadan kukla görünüm denetleyicisi sunuyoruz.

ne zaman viewDidAppearsizin kukla görünümü kumandam çağrılan, animasyon erimesi güzel haçla görünüm denetleyicisi reddediyorlar.

Sadece bu işi yapar, ama iyi görünüyor! BTW, sadece açıklama için ben kök görünümü denetleyicisi en do viewWillAppearböyle:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}
Cevap 27/11/2010 saat 08:38
kaynak kullanıcı

oy
4

son iPhone OS Programlama Kılavuzu örnek kodla bu konuda tam bölümü vardır. Ben belki bunu cevapsız, bu bir son ektir eminim. Size uymak zorunda tüm koşulları açıklar; temelde ...

  • (Bu durum çubuğunun pozisyonunu değiştirir, ancak görünümü) Info.plist özelliklerini ayarlamak
  • yöntem veya otomatik rotasyon ( "otomatik yeniden boyutlandırma davranışlar", sayfa 124) uygulamak: yöntemini veya applicationDidFinishLaunching: En UIViewController viewDidLoad ya üzerinde kendi merkezi etrafında elle görünümü döndürmek

"Yatay modda başlatılması" Bak, sayfa 102.

Cevap 04/09/2008 saat 22:57
kaynak kullanıcı

oy
3

Bu yanıta bakın: Manzara Modu SADECE iPhone veya iPad için

  1. PLIST oryantasyon eklemek
  2. shouldAutorotateToInterfaceOrientation = EVET tüm dosyalarda

Eğer karışık modlar kullanıyorsanız rağmen, birlikte daha iyi olabilir

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
Cevap 06/03/2011 saat 08:56
kaynak kullanıcı

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