2012-06-04 17 views
5

Geçerli iPhone uygulamasında yönlendirme işlemlerini gerçekleştirebilmek istiyorum. Sorun şu ki, denetleyicimin görünümünün döndürülmesini veya yeniden boyutlandırılmasını istemiyorum. Cihaz oryantasyonu değiştiğinde, sadece bir UI elemanının ekranda 90 derece dönmesini istiyorum.Bir iOS aygıtı döndüğünde, yönlendirmeyi yalnızca bir öğeyi nasıl değiştirebilirim?

Apple'ın kamera uygulaması bunun mükemmel bir örneğidir - aygıt yönü değiştiğinde, tüm düğmeler döndürülür, ancak görünümün kendisi dönmez.

Görüntüyü yeniden boyutlandırabildiğimi, tüm öğeleri öğelerinize taşıyabildiğimi ve düğmelerini canlandıracağımı varsayalım, ancak bunu yapmanın daha kolay bir yolu olması gerektiğini hissediyorum.

Şimdiden teşekkürler.

cevap

5

1) Sen willRotateToInterfaceOrientation: see this question

2 ekranda 2 görünüm hiyerarşileri ve değişim yaratabilir

Available in iOS 2.0 and later. 

UIApplication.h yılında Beyan bu değer Availability erişmek için UIApplicationStatusBarOrientationUserInfoKey kullanın) Veya tüm rotasyonları kendiniz halledebilirsiniz see this question

+1

Seçenek 2 mükemmeldi.Beni doğru yöne işaret ettiğin için teşekkürler. Bunu bir sebepten dolayı bulmakta zorlandım. Gönderinizi ve örnek kodunuzu takdir ediyorum. Korku veren !! – tnbeatty

+0

@tnbeatty Başvurulan yanıtla ilgili bir düzenleme yaptım, çünkü UIDeviceOrientation öğesinin bazı değerlerini yanlış olarak ele aldı – Jiri

2

Sen

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    { 
if(interfaceOrientation==UIInterfaceOrientationPortrait || interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown) 
    { 
     //Change frames as per orientations 
    } 

    else 
    {  
      //Change frames as per orientations 
    } 


    return NO; 
    } 

ve tercihe dayalı elle değiştirmek istediğiniz kullanıcı arayüzü öğeleri çerçeveleri set kullanabilirsiniz. this doc'un Constants bölümündeki tüm yönlendirmeye erişebilirsiniz.

DÜZENLEME: Sorun için NSNotification'ı kullanabilirsiniz.

UIApplicationDidChangeStatusBarOrientationNotification 

zaman uygulamanın kullanıcı arabirimi yönelimi değişiklikleri Yayınlanan.

userInfo sözlüğünde, 'u bir UIInterfaceOrientation değerini kapsülleyen bir NSNumber nesnesi bulunur (bkz. UIInterfaceOrientation).

+0

Bu iyi bir düşünce - ilk önce denedim. Sorun şu: Cihazın UIInterfaceOrientationPortrait'da başladığını söyle. Kullanıcı cihazı UIInterfaceOrientationLandscapeLeft'e döndürürse, bu değişikliği algılayabilir ve daha sonra çerçeveleri değiştirebilirim. Kullanıcı daha sonra UIInterfaceOrientationPortrait'a dönerse, bu yöntem çağrılmaz. – tnbeatty

+0

Bu ilginç, benim tecrübemde, bu rutin gerçekleşen her dönüşü (doğru) çağırır. – trumpetlicks

+1

Açıklığa kavuşturmalıyım: Önceki yorumumda, -houldAutorotateToInterfaceOrientation çağrılmayacaktır çünkü cihaz yönlendirmesi aslında hiç değişmez. Böylece, telefon Dikey olarak düşünülür ve cihaz tekrar dikey duruma geçtiğinde bu yöntemi çağırmaz. bu mantıklı mı? – tnbeatty

İlgili konular