2014-11-01 34 views
2

我正在使用iOS 8的UIPresentationController編寫自定義模態演示文稿。所呈現的控制器具有優選的界面方向UIInterfaceOrientationLandscapeLeft自定義模態演示文稿忽略preferredInterfaceOrientationForPresentation

在使用UIPresentationController呈現此控制器後,它將以縱向顯示,忽略呈現的控制器的preferredInterfaceOrientationForPresentation方法的結果。

呈現視圖控制器

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let controller = segue.destinationViewController as? UIViewController { 
     controller.modalPresentationStyle = .Custom 
     controller.transitioningDelegate = self 
    } 
} 

func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? { 
    return nil 
} 

func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? { 
    return nil 
} 

func presentationControllerForPresentedViewController(presented: UIViewController, 
    presentingViewController presenting: UIViewController!, 
    sourceViewController source: UIViewController) -> UIPresentationController? { 
     return UIPresentationController(presentedViewController: presented, presentingViewController: presenting) 
} 

提交 - 視圖 - 控制器

override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { 
    return .LandscapeLeft 
} 

是否有可能有UIPresentationController考慮到所提出的控制器的preferredInterfaceOrientationForPresentation方法的結果?

回答

1

我回答了這個在蘋果論壇,但萬一有人絆倒在谷歌從這個線程..

這不是預期工作。據我所知,在演示時處理方向調整的邏輯僅存在於用於實現默認演示風格的私有UIPresentationController子類中。

順便說一句,除非您在演示控制器子類中重寫-shouldRemovePresentersView,否則通常會忽略自定義呈現的視圖控制器的-supportedInterfaceOrientations方法。