129 lines
2.8 KiB
Swift
129 lines
2.8 KiB
Swift
//
|
|
// PanModalPresentable+Defaults.swift
|
|
// PanModal
|
|
//
|
|
// Copyright © 2018 Tiny Speck, Inc. All rights reserved.
|
|
//
|
|
|
|
#if os(iOS)
|
|
import UIKit
|
|
|
|
/**
|
|
Default values for the PanModalPresentable.
|
|
*/
|
|
public extension PanModalPresentable where Self: UIViewController {
|
|
|
|
var topOffset: CGFloat {
|
|
topLayoutOffset
|
|
}
|
|
|
|
var shortFormHeight: PanModalHeight {
|
|
return longFormHeight
|
|
}
|
|
|
|
var mediumFormHeight: PanModalHeight {
|
|
longFormHeight
|
|
}
|
|
|
|
var longFormHeight: PanModalHeight {
|
|
|
|
guard let scrollView = panScrollable
|
|
else { return .maxHeight }
|
|
|
|
// called once during presentation and stored
|
|
scrollView.layoutIfNeeded()
|
|
return .contentHeight(scrollView.contentSize.height)
|
|
}
|
|
|
|
var presentationDetents: [ModalViewPresentationDetent] {
|
|
[]
|
|
}
|
|
|
|
var cornerRadius: CGFloat {
|
|
return 8.0
|
|
}
|
|
|
|
var springDamping: CGFloat {
|
|
return 0.8
|
|
}
|
|
|
|
var transitionDuration: Double {
|
|
return PanModalAnimator.Constants.defaultTransitionDuration
|
|
}
|
|
|
|
var transitionAnimationOptions: UIView.AnimationOptions {
|
|
return [.curveEaseInOut, .allowUserInteraction, .beginFromCurrentState]
|
|
}
|
|
|
|
var panModalBackgroundColor: UIColor {
|
|
return UIColor.black.withAlphaComponent(0.7)
|
|
}
|
|
|
|
var scrollIndicatorInsets: UIEdgeInsets {
|
|
let top = shouldRoundTopCorners ? cornerRadius : 0
|
|
return UIEdgeInsets(top: CGFloat(top), left: 0, bottom: bottomLayoutOffset, right: 0)
|
|
}
|
|
|
|
var anchorModalToLongForm: Bool {
|
|
return true
|
|
}
|
|
|
|
var allowsExtendedPanScrolling: Bool {
|
|
|
|
guard let scrollView = panScrollable
|
|
else { return false }
|
|
|
|
scrollView.layoutIfNeeded()
|
|
return scrollView.contentSize.height > (scrollView.frame.height - bottomLayoutOffset)
|
|
}
|
|
|
|
var allowsDragToDismiss: Bool {
|
|
return true
|
|
}
|
|
|
|
var allowsTapToDismiss: Bool {
|
|
return true
|
|
}
|
|
|
|
var isUserInteractionEnabled: Bool {
|
|
return true
|
|
}
|
|
|
|
var isHapticFeedbackEnabled: Bool {
|
|
return true
|
|
}
|
|
|
|
var shouldRoundTopCorners: Bool {
|
|
return isPanModalPresented
|
|
}
|
|
|
|
func shouldRespond(to panModalGestureRecognizer: UIPanGestureRecognizer) -> Bool {
|
|
return true
|
|
}
|
|
|
|
func willRespond(to panModalGestureRecognizer: UIPanGestureRecognizer) {
|
|
|
|
}
|
|
|
|
func shouldTransition(to state: PanModalPresentationController.PresentationState) -> Bool {
|
|
return true
|
|
}
|
|
|
|
func shouldPrioritize(panModalGestureRecognizer: UIPanGestureRecognizer) -> Bool {
|
|
return false
|
|
}
|
|
|
|
func willTransition(to state: PanModalPresentationController.PresentationState) {
|
|
|
|
}
|
|
|
|
func panModalWillDismiss() {
|
|
|
|
}
|
|
|
|
func panModalDidDismiss() {
|
|
|
|
}
|
|
}
|
|
#endif
|