2012-10-02 6 views
5

Przejrzałem większość pytań i wypróbowałem prawie wszystko. Ale złą stroną jest to, że problem nadal istnieje.Widok interfejsu użytkownika w widoku modalnym jest wyświetlany w trybie pionowym w trybie poziomym.

Mam UIVIew, który jest zawsze uruchamiany w trybie poziomym i przedstawiam drugi widok (detailView) jako widok pełnoekranowy.

Na wierzchu znajduje się detailview z UIwebview.

Kiedy prezentuję detailView jako widok modalny, widok internetowy jest wyświetlany w trybie portretu.

wracam "YES" w shouldAutoRotateToInterfaceOrientation a także możliwość ustalenia autoresize, autoresizingMask i scalePageToFit właściwości.

Po obróceniu urządzenia i gdy detailView znajduje się z przodu, widok webowy odpowiednio ustawia krajobraz.

Problem występuje tylko wtedy, gdy po raz pierwszy przedstawię modalView.

Obrócenie urządzenia powoduje prawidłowe dopasowanie układu.

+0

I Próbowałem również ustawienie paska stanu w modalnych widoku danych viewWillAppear ., tj. [[UIApplication sharedApplication] setStatusBarOrientation: self.interfaceOrientation] ... Nawet to nie działa –

+0

: spróbuj tego - paka jeden niestandardowy viewController (na przykład - FirstViewController) klasy UIViewController. w tym VC wspieraj obie orientacje (Port i Land).Następnie stwórz SecondViewController, który będzie podklasą FirstViewController, oczywiście w tym u będziesz tworzyć UIView z trybem krajobrazu i robić to samo dalej, co ty. – Nayan

+1

Terminy 'landscape' lub' portrait' mode odnoszą się do 'UIViewController', ale nie do' UIView'. Czy mógłbyś wyjaśnić, co masz na myśli w trybie portretu 'UIWebView'. Którą metodę używasz do wyświetlania 'UIWebView' na górze' detailview'? – onegray

Odpowiedz

0

OK. Po pierwsze, pytanie, które napisałem, nie było jasne. Moje pytanie dotyczyło tego, że kiedy ładowałem widok internetowy, portret, ładował elementy widoku w trybie poziomym (CSS) i był ładowany jako tryb portretowy (CSS) w orientacji poziomej.

Okazuje się, że nie stosowałem prawidłowego stylu CSS.

Rozwiązaniem zrobiłem było: W metodzie viewDidLoad i willAnimateRotation, jestem delegowania powiadomienie do mojego javascript, aby zaktualizować styl oparty na orientację :)

+0

Czy mógłbyś pokazać kod dla tego - mam te same problemy, ale nie mam pojęcia, jeśli chodzi o javascript – iOSProgrammingIsFun

+0

@iOSProgrammingIsFun Czy możesz rozwinąć swój problem? Zrobiłem to kiedyś kiedyś z powrotem. Muszę szukać mojego kodu. –

+0

Ok, Mam kontroler widoku A prezentuje kontroler widoku B modalnie iw stylu pełnoekranowym. Wewnątrz VC B jest pełny ekran uiwebview. Ta strona internetowa jest używana do wyświetlania konkretnej witryny - np. Wikipedia. Jeśli aplikacja działa w układzie pionowym, strona internetowa jest sformatowana jako portret i jest skalowana, aby pasowała do widoku internetowego - nawet jeśli scalestofit jest zaznaczony w narzędziu do tworzenia interfejsów. Gdyby w mobilnym safari otwarto tę samą stronę, szerokość strony przekracza szerokość ekranu i jest bardziej czytelna, można ją również powiększyć, gdzie nie ma dostępu do widoku internetowego w VC B. Także jeśli VC B jest obrócony, strona jest pomieszana – iOSProgrammingIsFun

1

Jeśli używasz aplikacji na iOS 6 będzie trzeba następujący kod w modalne kontrolera widoku wspierać orientację poziomą:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscape; 
} 

- (BOOL) shouldAutorotate { 
    return YES; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationLandscapeLeft; 
} 

Ponadto, upewnij się, że są badania na rzeczywistym urządzeniu, w przeciwieństwie do symulatora, ponieważ auto-rotacja zachowuje się inaczej na symulatorze.

3

O ile mi wiadomo, ModalViews na iPhone nie obsługuje widoku poziomego. Przypadek może być inny dla iPhone 5.

Ale brzmi to tak, jakbyś ustawiał ModalView, a nie WebView na pejzaż, sugerowałbym inne podejście do radzenia sobie z tym.

Na przykład można animować DetailView w niczym ModalView więc rozpoczyna się w prawidłowej orientacji

0

To załatwi:

CGAffineTransform transform = CGAffineTransformIdentity; 
webView.transform = CGAffineTransformRotate(transform,-M_PI/2);