2011-12-02 20 views
8

W mojej aplikacji na iPhone mam UIImagePickerController do robienia zdjęć. Mam ukryć wszystkie domyślne elementy sterujące aparatu i dodałem UIView z dwoma przyciskami jako CameraOverLayView w UIImagePickerController. Moja aplikacja jest zawsze uruchamiana tylko w trybie poziomym. Aparat uruchamia również tryb krajobrazu. Teraz CameraOverlayView jest tylko w krajobrazie Lewa strona nie zmienia się z poziomej na prawą. Jak mogę zmienić CameraOverlayView LandscapeMode w lewo i w prawo, gdy zmieni się orientacja urządzenia? Proszę, pomóż mi to naprawić. To poważny problem w mojej aplikacji. Ten kod posiadać tryb wyświetlanie nakładki w krajobrazie lewejJak zmienić orientację kamery Nalepka orientacji w lewym i prawym telefonie iPhone?

imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81); 

i ten kod trzymaj cameraoverlayview w trybie Krajobrazowego tuż GAffineTransform przekształcenia = self.view.transform;

transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 

    imgpicker.cameraOverlayView.transform = transform; 

Kiedyś te kody w metodach UIInterfaceOrientation jak to,

UIInterfaceOrientation orientation= [[UIApplication sharedApplication] statusBarOrientation]; 
    if (orientation == UIInterfaceOrientationLandscapeLeft) 
    { 
     imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81); 
    } 
    else if (orientation == UIInterfaceOrientationLandscapeRight) 
    { 
     CGAffineTransform transform = self.view.transform; 
      transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 
     imgpicker.cameraOverlayView.transform = transform; 
    } 

Ale one nie pomagają mi. Gdy obracam orientację urządzenia w lewo i w prawo, podgląd kamery nie zmienia się. Czy możesz naprawić mój problem? Dzięki.

+0

Ktoś to rozwiązał? –

+0

dziękuję kolego za rozwiązanie! –

+0

@JayQ .: Czy rozwiązałeś to jeszcze? –

Odpowiedz

16

Dziękuję wszystkim. Rozwiązałem samodzielnie problem orientacji Camera OverlayView. Użyłem tego samego kodu, o którym mowa w moim pytaniu. Właśnie dodałem powiadomienie UIDeviceOrientation dla zmian orientacji. Proszę znaleźć kod poniżej,

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 


- (void) orientationChanged:(NSNotification *)notification 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
if(orientation == UIDeviceOrientationLandscapeLeft) 
     {     
      CGAffineTransform transform = self.view.transform; 
      transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 
      imgpicker.cameraOverlayView.transform = transform; 
     } 
     else if(orientation == UIDeviceOrientationLandscapeRight) 
     { 
      imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity,117.81); 
     } 
} 

Właśnie dodałem tę metodę dodatkowo w moim kodzie. Tak więc, gdy użytkownik zmieni orientację urządzenia, ta metoda wywoła i zmieni orientację widoku nakładki kamery. Sprawdź swoje warunki w tej metodzie, inaczej aplikacja ulegnie awarii. Dzięki.

+1

Używam tego, a moja nakładka nigdy nie jest poprawnie ustawiona. Jest zawsze za daleko w lewo lub w prawo. – zakdances

+0

@yuvaraj: Cześć ... używam iphone 4 i mogę podać dokładny kod obrotu dla orientacji. Mogę go obrócić, ale przyciski są wyrównane daleko w lewo lub daleko w prawo. –

+1

@yourfriendzak: Czy znalazłeś rozwiązanie tego problemu? Jeśli tak, możesz mi pomóc? –