Compare commits

...

9 Commits

Author SHA1 Message Date
jonkykong f5b6615c72 Podspec update 2019-07-21 21:44:17 -07:00
jonkykong 8804675b80 Demo project correction 2019-07-21 21:43:42 -07:00
jonkykong b0a09a5b7d Fix for layout when menu not dismissed during presentation 2019-07-21 21:43:25 -07:00
jonkykong f1e4efeb46 Refactor 2019-07-21 21:43:07 -07:00
jonkykong aea7592d85 Scope change 2019-07-19 00:49:26 -07:00
jonkykong 87edaf1d32 Update podspec 2019-07-19 00:32:22 -07:00
jonkykong d14a8d66b3 Tighten up gesture logic 2019-07-19 00:30:01 -07:00
jonkykong 36e8131965 Layering fix 2019-07-19 00:14:57 -07:00
jonkykong 58318a638d Example project fix 2019-07-19 00:14:31 -07:00
5 changed files with 25 additions and 26 deletions
+2 -1
View File
@@ -22,6 +22,7 @@ class MainViewController: UIViewController {
super.viewDidLoad()
setupSideMenu()
updateUI(settings: SideMenuSettings())
updateMenus()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
@@ -88,7 +89,7 @@ class MainViewController: UIViewController {
var settings = SideMenuSettings()
settings.presentationStyle = presentationStyle
settings.menuWidth = view.frame.width * CGFloat(screenWidthSlider.value)
settings.menuWidth = min(view.frame.width, view.frame.height) * CGFloat(screenWidthSlider.value)
let styles:[UIBlurEffect.Style?] = [nil, .dark, .light, .extraLight]
settings.blurEffectStyle = styles[blurSegmentControl.selectedSegmentIndex]
settings.statusBarEndAlpha = blackOutStatusBar.isOn ? 1 : 0
@@ -211,11 +211,9 @@ private extension SideMenuPresentationController {
if config.presentationStyle.menuOnTop {
addShadow(to: presentedViewController.view)
presentedViewController.view.layer.zPosition = 1
presentingViewController.view.layer.zPosition = 0
} else {
addShadow(to: presentingViewController.view)
presentingViewController.view.layer.zPosition = 1
presentedViewController.view.layer.zPosition = 0
presentedViewController.view.layer.zPosition = -1
}
}
+1 -1
View File
@@ -8,7 +8,7 @@
import Foundation
@objcMembers
public class SideMenuPresentationStyle {
open class SideMenuPresentationStyle {
/// Background color behind the views and status bar color
public var backgroundColor: UIColor = .black
/// The starting alpha value of the menu before it appears
@@ -106,7 +106,9 @@ open class UISideMenuNavigationController: UINavigationController {
open var settings = SideMenuSettings() {
didSet {
setupBlur()
setupSwipeGestures()
if !enableSwipeGestures {
removeSwipeGesture()
}
}
}
@@ -164,12 +166,12 @@ open class UISideMenuNavigationController: UINavigationController {
// When presenting a view controller from the menu, the menu view gets moved into another transition view above our transition container
// which can break the visual layout we had before. So, we move the menu view back to its original transition view to preserve it.
if let presentingView = presentingViewController?.view, let containerView = presentingView.superview {
containerView.addSubview(view)
}
if dismissOnPresent && !isBeingDismissed {
// We're presenting a view controller from the menu, so we need to hide the menu so it isn't showing when the presented view is dismissed.
if let presentingView = presentingViewController?.view, let containerView = presentingView.superview {
containerView.addSubview(view)
}
transitionController?.transition(presenting: false, animated: animated, alongsideTransition: { [weak self] in
guard let self = self else { return }
self.activeDelegate?.sideMenuWillDisappear?(menu: self, animated: animated)
@@ -204,11 +206,11 @@ open class UISideMenuNavigationController: UINavigationController {
activeDelegate?.sideMenuDidDisappear?(menu: self, animated: animated)
if dismissOnPresent && !isBeingDismissed {
view.isHidden = true
} else {
if isBeingDismissed {
transitionController = nil
interactive = false
} else if dismissOnPresent {
view.isHidden = true
}
}
@@ -235,6 +237,11 @@ open class UISideMenuNavigationController: UINavigationController {
self.rotating = false
}
}
open override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
transitionController?.layout()
}
override open func pushViewController(_ viewController: UIViewController, animated: Bool) {
let push = shouldPushViewController(viewController: viewController, animated: animated) { [weak self] _ in
@@ -405,12 +412,8 @@ extension UISideMenuNavigationController: SideMenuTransitionControllerDelegate {
}
internal func sideMenuTransitionController(_ transitionController: SideMenuTransitionController, didPresent viewController: UIViewController) {
guard !presentingViewControllerUserInteractionEnabled else { return }
let panGesture = UIPanGestureRecognizer()
panGesture.cancelsTouchesInView = false
panGesture.addTarget(self, action: #selector(handleDismissMenuPan(_:)))
view.superview?.addGestureRecognizer(panGesture)
removeSwipeGesture()
swipeToDismissGesture = addDismissPanGesture(to: view.superview)
let tapGestureRecognizer = UITapGestureRecognizer()
tapGestureRecognizer.addTarget(self, action: #selector(handleDismissMenuTap(_:)))
@@ -579,7 +582,6 @@ private extension UISideMenuNavigationController {
modalPresentationStyle = .overFullScreen
setupBlur()
setupSwipeGestures()
registerForNotifications()
}
@@ -626,13 +628,10 @@ private extension UISideMenuNavigationController {
}
}
func setupSwipeGestures() {
func removeSwipeGesture() {
if let swipeToDismissGesture = swipeToDismissGesture {
swipeToDismissGesture.view?.removeGestureRecognizer(swipeToDismissGesture)
}
if enableSwipeGestures {
swipeToDismissGesture = addDismissPanGesture(to: view)
}
}
func registerForNotifications() {
@@ -661,7 +660,8 @@ private extension UISideMenuNavigationController {
}
}
@discardableResult func addDismissPanGesture(to view: UIView) -> UIPanGestureRecognizer {
@discardableResult func addDismissPanGesture(to view: UIView?) -> UIPanGestureRecognizer? {
guard enableSwipeGestures, let view = view else { return nil }
return UIPanGestureRecognizer {
$0.cancelsTouchesInView = false
$0.addTarget(self, action: #selector(handleDismissMenuPan(_:)))
+1 -1
View File
@@ -8,7 +8,7 @@
Pod::Spec.new do |s|
s.name = "SideMenu"
s.version = "6.0.4"
s.version = "6.0.7"
s.summary = "Simple side menu control for iOS in Swift inspired by Facebook. Right and Left sides. No coding required."
# This description is used to generate tags and improve search results.