AKSideMenu alternatives and similar libraries
Based on the "Menu" category.
Alternatively, view AKSideMenu alternatives based on common mentions on social networks and blogs.
-
PageMenu
A paging menu controller built from other view controllers placed inside a scroll view (like Spotify, Windows Phone, Instagram) -
ViewDeck
An implementation of the sliding menu found in various iOS apps. -
SideMenu
Simple side/slide menu control for iOS, no code necessary! Lots of customization. Add it to your project in 5 minutes or less. -
SlideMenuControllerSwift
iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app. It is written in pure swift. -
Persei
Animated top menu for UITableView / UICollectionView / UIScrollView written in Swift -
CircleMenu
:octocat: ⭕️ CircleMenu is a simple, elegant UI menu with a circular layout and material design animations. Swift UI library made by @Ramotion -
PagingMenuController
Paging view controller with customizable menu in Swift. -
BTNavigationDropdownMenu
The elegant yet functional dropdown menu, written in Swift, appears underneath the navigation bar to display a list of defined items when a user clicks on the navigation title. -
GuillotineMenu
Our Guillotine Menu Transitioning Animation implemented in Swift reminds a bit of a notorious killing machine. -
ENSwiftSideMenu
A simple side menu for iOS written in Swift. -
Context-Menu.iOS
You can easily add awesome animated context menu to your app. -
SideMenuController
A side menu controller written in Swift for iOS -
Panels
Panels is a framework to easily add sliding panels to your application -
YNDropDownMenu
✨ Awesome Dropdown menu for iOS with Swift 5.0 -
PagingKit
PagingKit provides customizable menu UI. It has more flexible layout and design than the other libraries. -
IGLDropDownMenu
An iOS drop down menu with pretty animation and easy to customize. -
SwipeMenuViewController
Swipable tab and menu View and ViewController. -
PopMenu
PopMenu is pop animation menu inspired by Sina weibo / NetEase app. -
FlowingMenu
Interactive view transition to display menus with flowing and bouncing effects in Swift -
InteractiveSideMenu
iOS Interactive Side Menu written in Swift. -
SPLarkController
Custom transition between controllers. Settings controller for your iOS app. -
LLSlideMenu
This is a spring slide menu for iOS apps - 一个弹性侧滑菜单 -
MKDropdownMenu
🔻 Dropdown Menu for iOS with many customizable parameters to suit any needs -
ExpandingMenu
ExpandingMenu is menu button for iOS written in Swift. -
CategorySliderView
slider view for choosing categories. add any UIView type as category item view. Fully customisable -
RadialMenu
RadialMenu is a custom control for providing a touch context menu (like iMessage recording in iOS 8) built with Swift & POP -
DTPagerController
A fully customizable container view controller to display a set of ViewControllers in a horizontal scroll view. Written in Swift. -
DropDownMenuKit
UIKit drop down menu, simple yet flexible and written in Swift -
VLDContextSheet
Context menu similar to the one in the Pinterest iOS app -
RHSideButtons
Library provides easy to implement variation of Android (Material Design) Floating Action Button for iOS. You can use it as your app small side menu. 🌶 -
KWDrawerController
Drawer view controller that easy to use!
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of AKSideMenu or a related project?
README
AKSideMenu
AKSideMenu is a double side menu library with parallax effect.
Example Project
See the contained examples to get a sample of how AKSideMenu
can easily be integrated in your project.
Build the examples from the AKSideMenuExamples
directory.
Installation
CocoaPods.
To install, add the following line to your Podfile:
pod 'AKSideMenu'
Carthage.
To install, add the following line to your Cartfile:
github "dogo/AKSideMenu" "1.4.5"
Easy to use
Simple implementation
In your AppDelegate, add the code below.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow.init(frame: UIScreen.main.bounds)
// Create content and menu controllers
let navigationController: UINavigationController = UINavigationController.init(rootViewController: FirstViewController.init())
let leftMenuViewController: LeftMenuViewController = LeftMenuViewController.init()
let rightMenuViewController: RightMenuViewController = RightMenuViewController.init()
// Create side menu controller
let sideMenuViewController: AKSideMenu = AKSideMenu(contentViewController: navigationController, leftMenuViewController: leftMenuViewController, rightMenuViewController: rightMenuViewController)
// Make it a root controller
self.window!.rootViewController = sideMenuViewController
self.window!.backgroundColor = UIColor.white
self.window?.makeKeyAndVisible()
return true
}
Storyboards Example
- Create a subclass of
AKSideMenu
. In this example we call itRootViewController
. - In the Storyboard designate the root view's owner as
RootViewController
. - Add more view controllers to your Storyboard, and give them identifiers "leftMenuViewController", "rightMenuViewController" and "contentViewController". Note that in the new XCode the identifier is called "Storyboard ID" and can be found in the Identity inspector.
- Add a method
awakeFromNib
toRootViewController.swift
with the following code:
override public func awakeFromNib() {
self.contentViewController = self.storyboard!.instantiateViewControllerWithIdentifier("contentViewController")
self.leftMenuViewController = self.storyboard!.instantiateViewControllerWithIdentifier("leftMenuViewController")
self.rightMenuViewController = self.storyboard!.instantiateViewControllerWithIdentifier("rightMenuViewController")
}
Here is an example of a delegate implementation. Please adapt the code to your context.
...
sideMenuViewController.delegate = self
...
// MARK: - <AKSideMenuDelegate>
open func sideMenu(_ sideMenu: AKSideMenu, shouldRecognizeGesture recognizer: UIGestureRecognizer, simultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
// return true to allow both gesture recognizers to recognize simultaneously. Returns false by default
return false
}
open func sideMenu(_ sideMenu: AKSideMenu, gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool {
// return true or false based on your failure requirements. Returns false by default
return false
}
open func sideMenu(_ sideMenu: AKSideMenu, gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
// return true or false based on your failure requirements. Returns false by default
return false
}
open func sideMenu(_ sideMenu: AKSideMenu, willShowMenuViewController menuViewController: UIViewController) {
print("willShowMenuViewController")
}
open func sideMenu(_ sideMenu: AKSideMenu, didShowMenuViewController menuViewController: UIViewController) {
print("didShowMenuViewController")
}
open func sideMenu(_ sideMenu: AKSideMenu, willHideMenuViewController menuViewController: UIViewController) {
print("willHideMenuViewController")
}
open func sideMenu(_ sideMenu: AKSideMenu, didHideMenuViewController menuViewController: UIViewController) {
print("didHideMenuViewController")
}
Present the menu view controller:
self.sideMenuViewController!.presentLeftMenuViewController()
or
self.sideMenuViewController!.presentRightMenuViewController()
Switch content view controllers:
self.sideMenuViewController!.setContentViewController(viewController, animated: true)
self.sideMenuViewController!.hideMenuViewController()
Properties
public var animationDuration: TimeInterval
The animation duration. Defaults to 0.35.
public var backgroundImage: UIImage
The content background image. Defaults to white.
public var panGestureEnabled: Bool
Enables panGesture detection. Defaults to True.
public var panFromEdge: Bool
Enables panGesture detection from the edge. Defaults to True.
public var panMinimumOpenThreshold: Float
The minimum pan gesture amount to open the side menu. Defaults to 60.0.
public var interactivePopGestureRecognizerEnabled: Bool
Enables interactive pop gesture recognizer. Defaults to True.
public var scaleContentView: Bool
TODO. Defaults to True.
public var scaleBackgroundImageView: Bool
TODO. Defaults to False.
public var scaleMenuView: Bool
TODO. Defaults to True.
public let contentViewShadowEnabled: Bool
TODO. Defaults to False.
public var contentViewShadowOffset: CGSize
TODO. Defaults to CGSizeZero.
public var contentViewShadowOpacity: Float
TODO. Defaults to 0.4.
public var contentViewShadowRadius: CGFloat
TODO. Defaults to 8.0.
public var contentViewScaleValue: CGFloat
TODO. Defaults to 0.7.
public var contentViewInLandscapeOffsetCenterX: CGFloat
TODO. Defaults to 30.0.
public var contentViewInPortraitOffsetCenterX: CGFloat
TODO. Defaults to 30.0.
public var parallaxMenuMinimumRelativeValue: CGFloat
TODO. Defaults to -15.
public var parallaxMenuMaximumRelativeValue: CGFloat
TODO. Defaults to 15.
public var parallaxContentMinimumRelativeValue: CGFloat
TODO. Defaults to -25.
public var parallaxContentMaximumRelativeValue: CGFloat
TODO. Defaults to 25.
public var menuViewControllerTransformation: CGAffineTransform
TODO. Defaults to nil.
public var parallaxEnabled: Bool
TODO. Defaults to True.
public var bouncesHorizontally: Bool
TODO. Defaults to True.
public var menuPreferredStatusBarStyle: UIStatusBarStyle
Preferred UIStatusBarStyle when the menu is visible. Defaults to UIStatusBarStyle.default.
public var menuPrefersStatusBarHidden: Bool
Sets StatusBar hidden or not when the menu is visible. Defaults to False.
public var backgroundTransformScale: CGFloat
Sets the transform scale amount applied to the background imageview. Defaults to 1.7.
public var panFromEdgeZoneWidth: CGFloat
Sets the width of the pan gesture zone should be recognized. Defaults to 20.0.
public var panGestureLeftEnabled: Bool
Enable or disable left pan gesture recognition. Defaults to True.
public var panGestureRightEnabled: Bool
Enable or disable right pan gesture recognition. Defaults to True.
Collaboration
I tried to build an easy way to use API, while being flexible enough for multiple variations, but I'm sure there are ways of improving and adding more features, so feel free to collaborate with ideas, issues and/or pull requests.
ARC
AKSideMenu needs ARC.
Licence
AKSideMenu is available under the MIT license.
Thanks to the original team
Roman Efimov @romaonthego
*Note that all licence references and agreements mentioned in the AKSideMenu README section above
are relevant to that project's source code only.