我有一個問題,創建一個自定義賽格瑞:我重寫「執行()」方法如下定製UIStoryboardSegue - UIViewController的supportedInterfaceOrientations永遠不會調用
override func perform() {
if !isBack {
self.destinationViewController.view.frame = CGRectMake(self.sourceViewController.view.frame.width, 0, self.sourceViewController.view.frame.width, self.sourceViewController.view.frame.height)
self.sourceViewController.view.addSubview(self.destinationViewController.view)
self.sourceViewController.addChildViewController(self.destinationViewController)
print("Source: \(self.sourceViewController) ---> Destination: \(self.destinationViewController)")
UIView.animateWithDuration(0.5, animations: {() -> Void in
self.destinationViewController.view.frame = CGRectMake(0, 0, self.destinationViewController.view.frame.width, self.destinationViewController.view.frame.height)
}, completion: { (bolean) -> Void in
print("Animation Completed")
})
}else{
print("Source: \(self.sourceViewController) ---> Destination: \(self.destinationViewController)")
UIView.animateWithDuration(0.5, animations: {() -> Void in
self.sourceViewController.view.frame = CGRectMake(self.sourceViewController.view.frame.width, 0, self.sourceViewController.view.frame.width, self.sourceViewController.view.frame.height)
}, completion: { (bolean) -> Void in
print("Animation Completed")
self.sourceViewController.view.removeFromSuperview()
})
}
一切都正常運行,但是,在這一點上,旋轉「destinationViewController」中的方法沒有被調用。因此,如果我將「sourceViewController」鎖定爲縱向模式,而將「destinationViewController」解鎖,則後者不會旋轉。
假設問題出現在這一行: self.sourceViewController.view.addSubview(self.destinationViewController.view)
我該如何更改代碼來修復旋轉?
除了打印出日誌消息之外,這個自定義segue是做什麼的,標準'push' segue不會這樣做? AFAICT,當導航到目標視圖控制器時,它將從右側滑動,而在返回時則會從右側滑動。 – NRitH
好吧,這只是一個動畫的例子,如果我想創建一個最複雜的推動或模態動畫? – Eloreden