• 1000 extension:
extension UISplitViewController {
func showMasterView(from edge: PrimaryEdge = .leading, completion: (()->Void)? = nil) {
primaryEdge = edge
UIView.animate(withDuration: 0.5, animations: {
self.preferredDisplayMode = .allVisible
}) { (animationFinished) in
if let completion = completion, animationFinished {
completion()
}
}
}
func hideMasterView(completion: (()->Void)? = nil) {
UIView.animate(withDuration: 0.5, animations: {
self.preferredDisplayMode = .primaryHidden
}) { (animationFinished) in
if let completion = completion, animationFinished {
completion()
}
}
}
func toggleMasterView( completion: (()->Void)? = nil) {
var nextDisplayMode: UISplitViewController.DisplayMode
switch(self.preferredDisplayMode) {
case .primaryHidden:
nextDisplayMode = .allVisible
default:
nextDisplayMode = .primaryHidden
}
UIView.animate(withDuration: 0.5, animations: {
self.preferredDisplayMode = nextDisplayMode
}) { (animationFinished) in
if let completion = completion, animationFinished {
completion()
}
}
}
func toggleMasterViewNew() {
let barButtonItem = self.displayModeButtonItem
UIApplication.shared.sendAction(barButtonItem.action!, to: barButtonItem.target, from: nil, for: nil)
}
}
Эти функции отлично работают с анимацией при splitV C .primaryEdge = .leading (по умолчанию), но не для .trailing - анимация прерывается, мастер v c просто появляется для отображения и скрытия. Я знаю, что могу написать собственное решение, но я хочу знать, почему .trailing презентация сломала анимацию переключения.
Итак, я надеюсь, что мы сможем найти ответ вместе :)