Hej Stackoverflow Członkowie, może mógłbyś mi pomóc rozwiązać mój problem.Nie można uzyskaćInterfaceOrientationsForWindow do pracy z Swift 1.2
Problem polega na tym, że chcę zablokować orientację wszystkich kontrolerów UIView na "Portret", ale jeśli pojawi się MoviePlayer, powinien przełączyć się w tryb krajobrazu i cofnąć, jeśli odtwarzacz zniknie.
Do Swift 1.2 użyłem:
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow) -> UIInterfaceOrientationMask {
//If the video is being presented, let the user change orientation, otherwise don't.
if let presentedViewController = window.rootViewController?.presentedViewController? {
if (presentedViewController.isKindOfClass(MPMoviePlayerViewController) && !presentedViewController.isBeingDismissed()) {
return .AllButUpsideDown
}
}
return .Portrait
}
Z Swift 1,2 pewne rzeczy się zmieniły i tak skończyło się z następującego kodu:
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
//If the video is being presented, let the user change orientation, otherwise don't.
if let presentedViewController = window?.rootViewController?.presentedViewController {
if (presentedViewController.isKindOfClass(MPMoviePlayerViewController) && !presentedViewController.isBeingDismissed()) {
return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
}
}
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
Ale mój kod nie działa, film Gracz (XCDYoutube) jest zablokowany w trybie portretu. Orientacja urządzenia Ustawienia powinny być w porządku!
Z góry dziękuję za pomoc!
mam dwa szybkie sugestie: 1. Upewnij się, że plik Info.plist dla twojego projektu nie zawiera klucza do obsługiwanej orientacji interfejsu, który wyklucza tryby krajobrazu. 2. Ustaw punkt przerwania na pierwszym wierszu instrukcji "if" w funkcji supportedInterfaceOrientationsForWindow, a następnie przechodź przez pojedynczy krok przez kod, aby zobaczyć, co się dzieje. – dean
w następstwie komentarzy deanware - czy jesteś pewien, że trafiłeś w pułapkę? Zwracasz wartość int/not UIInterfaceOrientationMask. Czy spróbowałeś uaktualnić do opcji menu Szybka 1.2? – johndpope
Po prostu próbowałem w nowym projekcie twojego kodu Swift 1.2 i działa dobrze. Aplikacja obraca się tylko podczas prezentacji MoviePlayera. Prawdopodobnie masz inny problem. Może XCDYoutube nie gra dobrze z iOS 8 i nie obraca się już? Staraj się zawsze zwracać wszystkie orientacje, aby sprawdzić, czy obraca się odtwarzacz filmów. – pteofil