From b35908dba3980c2c4b4348d918033208fbe56037 Mon Sep 17 00:00:00 2001 From: Maksym Dyomin Date: Sun, 5 Mar 2017 00:34:17 +0200 Subject: [PATCH] - Add shadow to sidemenu - Make sidemenu icon size configurable --- .DS_Store | Bin 6148 -> 8196 bytes Source/SideMenuController+CustomTypes.swift | 3 +++ Source/SideMenuController+SideOver.swift | 13 +++++++++++++ Source/SideMenuController.swift | 13 +++++++++++++ Source/UIKitExtensions.swift | 5 +++-- 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.DS_Store b/.DS_Store index be988d49188af1a03bed01fff5f28530334f2c17..f89fc2a683cffefcf18ed7a3dba83b3d307b05f1 100644 GIT binary patch literal 8196 zcmeHM&ubGw6n@j6iAC)}uojWM6g;${L1`)|#55HGR-`F<@JE|u*L3Sj3 z;IW|pi)T^1DCkx24-ik@>Nm5Sy1TKWCScK-F!N@2-}h$rdv9m=O^Ar)8hV;&iii@Z zLQYPg`9TraMeQj=!I?9V40xg*ap@Xi(`amah$ zzp7frfMVdkWI(JB8mf@lKz4j7mku;C1%MpEX<5)m9w0GVAhUt&_)1l&@xns8ok*OXNna^!)OH`W9=D%7!%d;EVCAKg{_#Qk z9K9GV+eOE=xLp-6dG$IKXbIHaK!`2JNc#+paBwAQ6`EHOk}HrYP_0K1G933p;W!Pe zCh2hC3aU*FjD=v4p}^rLI0`|Lg3CCxTu6f|F`FWE!#2sW)5Qv})nN~1V+PG1&#}hydA;FPh~8cP@0!PtxX=Bb$A7<|L= zv^l+8%SARE_YvLL`Y=jscp}|Hmfx@yNsDR*!@#g_W=iD$%ZKm(4`wiBMKPclIFbyo zk$f?q!_>N8c=1_^Tw6okKov#kb$lryXk*Ptpe*+6!Di8CmFVsxzCXAb1MFkjn%7TmXa`N-iLAoXuW-Mms;1Fa6a)3YpWRxq& c=#7QnnJ4qhc!DfqV1if*atFiac%C`T03xj$1ONa4 diff --git a/Source/SideMenuController+CustomTypes.swift b/Source/SideMenuController+CustomTypes.swift index 7b20a92..cd54332 100644 --- a/Source/SideMenuController+CustomTypes.swift +++ b/Source/SideMenuController+CustomTypes.swift @@ -48,6 +48,9 @@ public extension SideMenuController { public var sidePanelWidth: CGFloat = 300 public var centerPanelOverlayColor = UIColor(hue:0.15, saturation:0.21, brightness:0.17, alpha:0.6) public var centerPanelShadow = false + public var sidePanelShadow = false + public var menuButtonSize = CGSize(width: 40, height: 40) + public var menuButtonSeparatorWidth = CGFloat(-10) } public struct Animating { diff --git a/Source/SideMenuController+SideOver.swift b/Source/SideMenuController+SideOver.swift index 70cd2ec..dbdae35 100644 --- a/Source/SideMenuController+SideOver.swift +++ b/Source/SideMenuController+SideOver.swift @@ -105,6 +105,19 @@ extension SideMenuController { } } + func setShadowFromSideMenu(hidden: Bool) { + + guard _preferences.drawing.sidePanelShadow else { + return + } + + if hidden { + sidePanel.layer.shadowOpacity = 0.0 + } else { + sidePanel.layer.shadowOpacity = 0.8 + } + } + func setAboveSidePanel(hidden: Bool, completion: ((Bool) -> ())? = nil){ var destinationFrame = sidePanel.frame diff --git a/Source/SideMenuController.swift b/Source/SideMenuController.swift index a4f1aa9..1b7f40c 100644 --- a/Source/SideMenuController.swift +++ b/Source/SideMenuController.swift @@ -205,6 +205,17 @@ open class SideMenuController: UIViewController, UIGestureRecognizerDelegate { // MARK: - Configurations - + func configureSideMenuShadow() { + guard _preferences.drawing.sidePanelShadow else { + return + } + sidePanel.layer.shadowOffset = CGSize(width: 18, height: 0) + sidePanel.layer.shadowRadius = 20 + sidePanel.layer.shadowOpacity = 0.9 + sidePanel.layer.shadowColor = UIColor.black.cgColor + sidePanel.layer.masksToBounds = false + } + func repositionViews() { if sidePanelVisible { @@ -242,6 +253,7 @@ open class SideMenuController: UIViewController, UIGestureRecognizerDelegate { sidePanel = UIView(frame: sidePanelFrame) view.addSubview(sidePanel) sidePanel.clipsToBounds = true + configureSideMenuShadow() if sidePanelPosition.isPositionedUnder { view.sendSubview(toBack: sidePanel) @@ -305,6 +317,7 @@ open class SideMenuController: UIViewController, UIGestureRecognizerDelegate { }else if !display { centerPanelOverlay.removeFromSuperview() } + setShadowFromSideMenu(hidden: !display) } else { setSideShadow(hidden: !display) } diff --git a/Source/UIKitExtensions.swift b/Source/UIKitExtensions.swift index 529c08a..6050dc8 100644 --- a/Source/UIKitExtensions.swift +++ b/Source/UIKitExtensions.swift @@ -43,7 +43,8 @@ public extension UINavigationController { return } - let button = UIButton(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) + let buttonSize = SideMenuController.preferences.drawing.menuButtonSize + let button = UIButton(frame: CGRect(x: 0, y: 0, width: buttonSize.width, height: buttonSize.height)) button.accessibilityIdentifier = SideMenuController.preferences.interaction.menuButtonAccessibilityIdentifier button.setImage(image, for: .normal) button.addTarget(sideMenuController, action: #selector(SideMenuController.toggle), for: UIControlEvents.touchUpInside) @@ -75,7 +76,7 @@ public extension UINavigationController { item.customView = button let spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil) - spacer.width = -10 + spacer.width = SideMenuController.preferences.drawing.menuButtonSeparatorWidth items.append(contentsOf: positionLeft ? [spacer, item] : [item, spacer]) return items