-
-
Notifications
You must be signed in to change notification settings - Fork 41
Home
Just setting these frameworks in the Linked Frameworks and Libraries
, it works. (if you use Carthage)
Notes: these frameworks use Method Swizzling.
When setting manually without Method Swizzling, please use SwipeTransition.framework
only.
It is possible to disable the feature only for a specific view controller.
class NoSwipeVC: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
navigationController?.swipeBack?.isEnabled = false
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
navigationController?.swipeBack?.isEnabled = true
}
}
Notes: when you use AutoSwipeBack.framework
, these are unnecessary.
Just use SwipeBackNavigationController
instead of UINavigationController
. Of course, you can set it with Interface Builder.
let viewController = UIViewController()
let navigationController = SwipeBackNavigationController(rootViewControlelr: viewController)
Another way is to set swipeBack
.
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
swipeBack = SwipeBackController(navigationController: self)
}
}
It is possible to disable the feature only for a specific view controller.
class NoSwipeVC: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
swipeToDismiss?.isEnabled = false
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
swipeToDismiss?.isEnabled = true
}
}
Notes: when you use AutoSwipeToDismiss.framework
, these are unnecessary.
Just use SwipeToDismissNavigationController
instead of UINavigationController
. Of course, you can set it with Interface Builder.
let viewController = UIViewController()
let navigationController = SwipeToDismissNavigationController(rootViewControlelr: viewController)
Another way is to set swipeToDismiss
.
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
modalPresentationStyle = .overFullScreen
swipeToDismiss = SwipeToDismissController(viewController: self)
}
}
You can also change the behavior such as animation.
SwipeBackConfiguration.shared.parallaxFactor = 0.6
SwipeToDismissConfiguration.shared.dismissHeightRatio = 0.5
Inheriting the configure class, you can set it with computed property.
class CustomSwipeBackConfiguration: SwipeBackConfiguration {
override var transitionDuration: TimeInterval {
get { return 1.5 }
set { super.transitionDuration = newValue }
}
}
SwipeBackConfiguration.shared = CustomSwipeBackConfiguration()