5

Burada küçük bir sorun yaşıyorum. Aynı senaryoda iki görüntü denetleyicim var (MainStoryboard -> Dikey modda Calc view Controller ve yatay modda Calc view controller). İlk olarak shouldAutoRotate için bir bool oluşturduğumda döndürdüm, ancak bazı düğmeler vb. Olmasını beklediğiniz yerde olmadığından, diğer bir deyişle tüm bunlar her zaman peyzaj modu. Şimdi, Manzara modunda ve ana Portre modunda 2 görüntü denetleyicisi oluşturdum. Şimdi anahtar, bu iki kontrol ünitesi arasında dönüş yapmaktır. CalculatorViewController.mi içinde Aynı storyboard üzerinde 2 view controller'lar arasında geçiş yapmak, willAutorotateTo ... kullanarak rotasyonda çalışmaz,

i bulduk bazı yöntemler İOS 6'da silindi olduğunu gördük (ve şimdi kullanıyorum birini şu) bir sonra biraz araştırma var
GÜNCELLEME
olduğunu iOS 6'da " i dönmesi üzerine çağrılacak i hareketsiz cant doğru görünüm denetleyicisi almak iOS 6 ilgili doğru yöntemler kullanıyorum düşünüyorum rağmen doğru yoldan tür "Ancak bu

@synthesize portraitView, landscapeView; 

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 
-(NSUInteger)supportedInterfaceOrientations:toInterfaceOrientation 
{ 
    if(UIInterfaceOrientationMaskAllButUpsideDown) 
    { 
     if (UIInterfaceOrientationPortrait) 
     { 
      self.view = portraitView; 
     } 
     else if (UIInterfaceOrientationLandscapeLeft) 
     { 
      self.view = landscapeView; 
     } 

    } 
    return YES; 

}  

olacağını

ve CalculatorViewController.h

@interface CalculatorViewController : UIViewController { 


    IBOutlet UIView *portraitView; // declaring view - portrait 
    IBOutlet UIView *landscapeView; // declaring view - landscape 
    //rest of irrelevant code below 

} 
@property (nonatomic, retain) UIView *portraitView; 
@property (nonatomic, retain) UIView *landscapeView; 

enter image description here Hemen şimdi alakasız olan bu 2 beyaz denetleyicileri görmezden. Resmi gönderme kaç kez bu çift gibi şeyler yaptığım zaman

+0

willOutorotateFromInterfaceOrientation: adlı bir yöntem yoktur. Bu bir yazım hatası mı, yoksa bu bile derleme değil mi? – rdelmar

+0

@rdelmar Emmm, kodun ilk parçasında - (bool) willOutorotate .... 'a bakarsanız bir yöntem var mı? –

+0

Kodunuzda görüyorum. Çağrılıyor mu? Apple'ın belgelerinde böyle bir yöntem bulamıyorum. Varsa, iOS öncesi 5 olmalıdır. – rdelmar

cevap

3

için teşekkür ederiz bu 2 görünüm denetleyicileri

göstermek ve bu senin ViewController boş görünüme sahip olması için sık sık daha kolay için. Ardından, Yatay görünümünüzü manzaranın ana alt görünümü olarak ekleyin ve ardından dikey olarak döndüğünüzde kaldırın. Ayrı VC'lere sahip olmaya çalışırsanız, o zaman sadece sorunsuz geçiş için karışıklık halindeki bir devlet tasarrufu koduna sahip olursunuz.

Bu tasarımla hem sürekli altyazılara sahip olmanın hem de uygun olduğunda bunları gösterme/gizleme özelliğinin tadını çıkarabilirsiniz. Bu daha fazla bellek yoğun, ama güzel geçiş animasyonları yapabilirsiniz.

Bu sayede tüm bağlantılarınız ve mantığınız tek bir VC'de olacak ve sadece arayüz değişecektir.

+0

Evet, aslında bu kadar kolay bir çözüm olduğu için bunu yaptım. –