Git Product home page Git Product logo

fapanels's Introduction

Alt text

Swift version Support Dependecy Manager Version Carthage Compatible License Platform CocoaPods CocoaPods

Famous Apps Using FAPanels


New Features Added


  • Swift Package Manager Support Added

Change Color Of Center Panel While Panning


open var colorForTapView: UIColor = UIColor.black.withAlphaComponent(0.35)
open var shouldAnimateWithPan: Bool = true

Issues Resolved ( > 0.5.0 only)


  • XCode 10 support
  • Swift 5.0 support

Issues Resolved ( > 0.4.0 only)


  • Presenting a UINavigation controller distorts the frames of center panel while left panel is open and its state is front, is resolved
  • Crash when right panel is nil and layout panel containers are updated is resolved

New Features Added ( > 0.3.5 only)


  • Execute a completion closure for any state of side menus, right after the animation of changing center panelVC
  • Smooth logout feature ( i.e: When user taps on logout button/cell in the side menu, you will change the center panelVC and then can set left panelVC to "nil" as you don't want the user to use side menus in login/signup stories)
  • Change Left/Right menus with smooth center panelVC animations

New Features Added ( > 0.3.1 only)


  • Create as many instances of FAPanelController with code only
  • Configure its left, right and center panels as you want
  • Update the Root Window Controller with any FAPanelController object

Usage

//  Create FAPanelController object with out any NSCoder, Storyboards and Nib files

let rootController = FAPanelController()

//  Configure the panels as you want and assign this panel controller to root controller of window.

window?.rootViewController = rootController


//  You can also set window's root controller to any FAPanelController object with different FAPanelConfigurations at any time.

New Features Added ( > 0.3.0 only)


  • Right panel position (front/back) to center panel
  • Dark Overlay on right panel, if right panel position is front

Right Panel Position

back front

Usage

//  Set the Right Panel position

let rootController: FAPanelController = window?.rootViewController as! FAPanelController

rootController.rightPanelPosition = .front
rootController.rightPanelPosition = .back

New Features Added ( > 0.2.1 only)


  • Left panel position (front/back) to center panel
  • Shadow on left panel, if left panel position is front
  • FAPanel State Delegate feature

Left Panel Position

back front

Usage

//  Set the Left Panel position

let rootController: FAPanelController = window?.rootViewController as! FAPanelController

rootController.leftPanelPosition = .front
rootController.leftPanelPosition = .back

Features


  • Implementation with code & storyboard
  • Left, right and center panel supported
  • Change left, right or center panel
  • Open left, right or center panel
  • Supports Animations
  • Multiple Panel configurations
  • Supports status bar preffered style for all panels

Transitions supported


  • Flip From Left
  • Flip From Right
  • Flip From Top
  • Flip From Bottom
  • Curl Up
  • Curl Down
  • Cross Dissolve
  • Move Up
  • Move Down
  • Move Left
  • Move Right
  • Split Horizontally
  • Split Vertically
  • Dump Fall
  • Box Fade

Panel configurations

// Panels width

var leftPanelWidth : CGFloat = 280  //  It will override the gap percentage value
var rightPanelWidth: CGFloat = 280

var leftPanelGapPercentage : CGFloat = 0.8
var rightPanelGapPercentage: CGFloat = 0.8


// resizes all subviews as well

var resizeLeftPanel : Bool = false
var resizeRightPanel: Bool = false


// Adds push animation on side panels

var pusheSidePanels: Bool = false


// Bounce effects on panel animations

var bounceOnLeftPanelOpen  : Bool = true
var bounceOnRightPanelOpen : Bool = true
var bounceOnCenterPanelOpen: Bool = true


var bounceOnLeftPanelClose   : Bool = false
var bounceOnRightPanelClose  : Bool = false
var bounceOnCenterPanelChange: Bool = true


var bouncePercentage : CGFloat = 0.075
var bounceDuration   : CGFloat = 0.1


//  Panning Gesture

var canRecognizePanGesture: Bool = true

var panFromEdge          : Bool = false
var minEdgeForLeftPanel  : CGFloat = 70.0
var minEdgeForRightPanel : CGFloat = 70.0

var canLeftSwipe : Bool = true
var canRightSwipe: Bool = true


// restricts panning gesture to work for top VC of Navigation/TabBar Controller

var restrictPanningToTopVC: Bool = true


// Handles the interface auto rotation of visible panel

var handleAutoRotation: Bool = true


// Applies corner radius to panels

var cornerRadius: CGFloat = 0.0


// Shadow configurations

open var shadowColor   : CGColor = UIColor.black.cgColor
open var shadowOffset  : CGSize  = CGSize(width: 10.0, height: 0.0)
open var shadowOppacity: Float = 0.5


// Remove panels from super view when possible

var unloadRightPanel: Bool = false
var unloadLeftPanel : Bool = false


// Max animation duration for animations of side panels

var maxAnimDuration  : CGFloat = 0.20


// percentage of screen's width to the centerPanel.view must move for panGesture to succeed

var minMovePercentage: CGFloat = 0.15


// Only Center Panel Change animation

var changeCenterPanelAnimated : Bool = true
var centerPanelTransitionType : FAPanelTransitionType = .crossDissolve
var centerPanelTransitionDuration: TimeInterval = 0.60

Installation

Cocoapods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate FAPanel into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target '<Your Target Name>' do
pod 'FAPanels'
end

Then, run the following command:

$ pod install

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate FAPanels into your Xcode project using Carthage, specify it in your Cartfile:

github "fahidattique55/FAPanels" >= 0.2.0

Run carthage update to build the framework and drag the built FAPanels.framework into your Xcode project.

Usage

Step 1

  • Set the root window as FAPanel controller as shown in below image,

Alt text

Step 2

  • Add the following code in AppDelegate.swift file,
//  Load the Controllers 

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

let leftMenuVC: LeftMenuVC = mainStoryboard.instantiateViewController(withIdentifier: "LeftMenuVC") as! LeftMenuVC

let rightMenuVC: RightMenuVC = mainStoryboard.instantiateViewController(withIdentifier: "RightMenuVC") as! RightMenuVC

let centerVC: CenterVC = mainStoryboard.instantiateViewController(withIdentifier: "CenterVC1") as! CenterVC
let centerNavVC = UINavigationController(rootViewController: centerVC)




//  Set the Panel controllers with just two lines of code

let rootController: FAPanelController = window?.rootViewController as! FAPanelController
rootController.center(centerNavVC).left(leftMenuVC).right(rightMenuVC)
  • All done! Run the code and see the magic.

Step 2 (Continue - Panel Controllers)

  • Don't want to set RightMenuVC then just remove the right panel code i.e,
//  This is the code to set all panels 

rootController.center(centerNavVC).left(leftMenuVC).right(rightMenuVC)


//  Updated code which have only left and center panels 

rootController.center(centerNavVC).left(leftMenuVC)


//  Similarly, if left panel is not needed the remove the left panel code.

rootController.center(centerNavVC).right(rightMenuVC)


//  In case you only want the center panel, then update code to

rootController.center(centerNavVC)

Step 2 (Continue - Panel Configurations)

  • Configre the Panels before setting the panels
rootController.configs.rightPanelWidth = 80
rootController.configs.bounceOnRightPanelOpen = false



//  Should Pan from edge? Add these lines of code, 

rootController.configs.panFromEdge = false
rootController.configs.minEdgeForLeftPanel  = 70
rootController.configs.minEdgeForRightPanel = 70


rootController.center(centerNavVC).left(leftMenuVC).right(rightMenuVC)


//  For more configurations and their details, Please have a look into ``` FAPanelConfigurations.swift ``` file 

Access Panel

  • Panel can be accessed from any view controller,
panel?.configs = FAPanelConfigurations()

Open/Close Panels

  • Open Left or Right panels with/without animations
panel?.openLeft(animated: true)
panel?.openRight(animated: true)
  • Open/Close Panels Preview

Change/Remove Panels

  • Change Left, Right or Center Panel from any view controller
//  Change Center panel

let centerVC: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "CenterVC2")
let centerNavVC = UINavigationController(rootViewController: centerVC)

panel!.center(centerNavVC)



//  Change Left panel

let leftVC: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "LeftVC")
panel!.left(leftVC)


//  Remove Left panel

panel!.left(nil)
  • Preview, when changing center panel from left/right panels

Change Center Panel (With custom transitions and durations)

  • Change Left, Right or Center Panel from any view controller
//  Specify the transition type

panel!.configs.centerPanelTransitionType = .transitionOption     // Transitions supported are mentioned in FAPanelTransitionType


//  Specify the transition duration

panel!.configs.centerPanelTransitionDuration = 0.60


//  Update the center panel

panel!.center(centerNavVC)
  • Transitions Preview
flipFromLeft flipFromRight
flipFromTop flipFromBottom
curlUp curlDown
crossDissolve moveRight
moveLeft moveUp
moveDown splitVertically
splitHorizontally dumpFall
boxFade

Supports interface rotation

License

FAPanels is licensed under the Apache License 2.0.

For more details visit http://www.apache.org/licenses/LICENSE-2.0

Author

Fahid Attique - (https://github.com/fahidattique55)

fapanels's People

Contributors

fahidattique55 avatar fidmor89 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fapanels's Issues

pushing viewController leftMenu cannot work

Hi as title

I follow the example _ = panel!.center(myVC)

It turns out that the center viewController is pushed right, but the leftMenu is not working...

I cannot open leftMenu even called panel?.openLeft(animated: true)
I also print panel?.left, and I can get the right menuVC, just cannot use it

do I need to extension other transition stuff?

Here is my setUp inside appDelegate

  private func setUpControllers() {
    window = UIWindow(frame: UIScreen.main.bounds)
    guard let window = window else { fatalError("no windows") }

    let centerVC = UINavigationController(rootViewController: myCenterVC())
    let menuVC = MyMenuVC()

    let rootVC = FAPanelController()
    _ = rootVC.center(centerVC).left(menuVC)

    window.rootViewController = rootVC
  }

thanks

Great library. Thanks for sharing

Thanks for sharing the library. just info. Warning in xcode.
warning from xcode
"the use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and disable Swift 3 @objc inference."

About step 2

I've already set the root window as FAPanel controller.
But when i'm trying to do step 2,
i can't let rootController: FAPanelController = window?.rootViewController as! FAPanelController
because FAPanelController is a undeclared type.

I'm pretty like this pod and want to use it in my project.
Please let me know if there's any solution.
Best regard

Right panel position

Any option to get the behavior already defined for:

Left panel position (front/back) to center panel

...but for right panel?

Thanks for this useful implementation!

Could not cast value of type 'UIViewController' to FAPanels

let panel = AppStoryboard.Dashboard.instance.instantiateViewController(withIdentifier: "fapanel") as! FAPanelController
let center = AppStoryboard.Dashboard.instance.instantiateViewController(withIdentifier: "tabbarnav")
let left = AppStoryboard.Drawer.instance.instantiateViewController(withIdentifier: "leftdrawervc")
panel.center(center).left(left)
let appD = UIApplication.shared.delegate as! AppDelegate
appD.window?.rootViewController = panel
appD.window?.makeKeyAndVisible()

Inherit Module from target is marked

Ability to close side panel by swiping sidepanel itself too.

In current condition of the lib it is impossible to close side panel by swiping it.
In order to close it you should tap, or swipe the grayed area only (look at the pic to see swipeable and not swipeable areas).
From UX point of view it isn't convenient to swipe only this grayed area to close it.
I HIGHLY recommend You to integrate this closing ability of side panel by swiping the entire screen (not only the grayed area)!

Or it would be good if user himself can decide/set the swipeable area type.
Possible values are :

enum SwipeableArea {
    case entireScreen
    case sidePanel
    case grayedArea // outside of side menu
}

simulator screen shot - iphone 6 - 2018-07-29 at 09

Change dark overlay opacity with animation

Hi,
I configured FAPanel to show dark overlay when left panel position is front
configs.showDarkOverlayUnderLeftPanelOnTop = true

But this overlay view appears/disappears without animation. I want to animate it's opacity depending on the left panel's distance from the edge (or while moving left panel with the finger).

How can I achieve this?
Thanks.

FAPanel use from other viewcontroller

Hi,
This is not an issue, I need your help.
How can I use FAPanel from another view controller. I don't want to use FAPanel from appDelegate.
I have Signin View Controller after successfully signin I want to use FAPanel.
I already set root view controller is signin view controller.
How can I use FAPanels after user signin? I want to use FAPanel in my signin view controller.

my view controller name is

  1. LeftViewController
  2. HomeViewController
  3. not use right view controller so I passed nill

My Code is which is used in a signin view controller

                //====FAPanel for XIB
                let centerVC = HomeViewController(nibName: "HomeViewController", bundle: nil)
                let leftMenuVC = LeftViewController(nibName: "LeftViewController", bundle: nil)
              
               let centerNavVC = UINavigationController(rootViewController: centerVC)
                
                let window = UIWindow(frame: UIScreen.main.bounds)

// let appDelegate = UIApplication.shared.delegate as! AppDelegate

                let rootController: FAPanelController = window.rootViewController as! FAPanelController
                _ = rootController.center(centerNavVC).left(leftMenuVC).right(nil)
                window.makeKeyAndVisible()

But this code is not working.

Can you please help me!

I face this type of issue as well

Could not cast value of type 'UINavigationController' (0x10b719ed8) to 'appname.FAPanelController' (0x106fc41f8).
2018-03-09 16:05:07.504574+0530 appname[28149:682526] Could not cast value of type 'UINavigationController' (0x10b719ed8) to 'appname.FAPanelController' (0x106fc41f8).

Xcode beta 5 Swift 4.2 - iOS 10.2 platform produces a crash

Hi,

After creating a simple project, simply by referencing the framework using Carthage I am getting a crash, any ideas please?

dyld: Symbol not found: __T0BOWV
Referenced from: /Users/r00tdvd/Library/Developer/CoreSimulator/Devices/245706A5-FD39-4288-B04D-202402D21E68/data/Containers/Bundle/Application/4E801E8F-F71E-4583-9816-52F718E68BBA/SavingGrace.app/Frameworks/FAPanel.framework/FAPanel
Expected in: /Users/r00tdvd/Library/Developer/CoreSimulator/Devices/245706A5-FD39-4288-B04D-202402D21E68/data/Containers/Bundle/Application/4E801E8F-F71E-4583-9816-52F718E68BBA/SavingGrace.app/Frameworks/libswiftCore.dylib
in /Users/r00tdvd/Library/Developer/CoreSimulator/Devices/245706A5-FD39-4288-B04D-202402D21E68/data/Containers/Bundle/Application/4E801E8F-F71E-4583-9816-52F718E68BBA/SavingGrace.app/Frameworks/FAPanel.framework/FAPanel

How close side menu and push to target ViewController from center viewController?

Hi there.

I want to tap a button on side menu then close the side menu and push to a new viewController from center viewController.

I could't set a delegate from center viewController to side menu class so I used NotificationCenter!

NotificationCenter works and I can close the side menu but pushing to new viewController programically does not work !

present new class modally works though.

Thank You.

crash in appdelegate

Hi
after set this code
let rootController: FAPanelController = window?.rootViewController as! FAPanelController

app crash and get me this error

Could not cast value of type 'LibraryForDeveloper.ViewController'
my ViewController extend from UIViewController

screen shot 1396-05-20 at 19 44 15

thanks

issues in swift v 4.2

Hi Team,

I have updated the Xcode and now running same code on swift version 4.2, then it is not working on Swift version 4.2, But us is woking fine with same Xcode with lower version of swift.

Thanks

How to disble side menu in another viewController ?

I try to use setNavigationController in next viewController, I want to remove FAPanels in there, how can I fix it?

let vc = HomeViewController()
self.navigationController?.setViewControllers([vc], animated: true)

SidePanel gap after rotation.

I configure the panels like this:

    func configureSidePanelController() -> FAPanelController {
        let panelVC = FAPanelController()

        panelVC.configs.panFromEdge = true
        panelVC.configs.unloadRightPanel = true

        panelVC.configs.resizeLeftPanel = true
        panelVC.configs.resizeRightPanel = true

        panelVC.configs.leftPanelWidth = 0
        panelVC.configs.rightPanelWidth = 0
        panelVC.configs.leftPanelGapPercentage = hardwareDevice.isPad ? 0.5 : 0.8
        panelVC.configs.rightPanelGapPercentage = hardwareDevice.isPad ? 0.5 : 0.8

        panelVC.leftPanelPosition = .front
        panelVC.rightPanelPosition = .front

And exhibit this:

image

Video here:

sidePanelGap.mp4.zip

Close left panel issue

Hi thanks for this nice library, its really helpful for n00b like me.

I try to close left panel from left panel view controller by using panel?.closeLeft()
What i expect is left panel will be closed with animation slide out, but what i get is only left panel closed without any slide out animation.
Is there any configuration that i do incorrectly?
screen shot 2018-10-09 at 17 18 32

(Request) FAPanelDelegate

Might be useful to create a delegate for FAPanelController:

public protocol FAPanelControllerDelegate: class{

func centerPanelWillBecomeActive()
func leftPanelWillBecomeActive()
func rightPanelWillBecomeActive()

func centerPanelDidBecomeActive()
func leftPanelDidBecomeActive()
func rightPanelDidBecomeActive()

}

Panel Delegates responses are slow

Not sure if it's only me

Delegate methods are running called for the first few times.

and

let panel = FAPanelController() doesn't work, have to use (coder: ..)

Example code is crashing

This is the crashed log:

Simultaneous accesses to 0x1068598c8, but modification requires exclusive access.
Previous access (a modification) started at FAPanels`FAPanelController.centerPanelVC.setter + 1123 (0x10680d673).
Current access (a modification) started at:
0    libswiftCore.dylib                 0x000000010b1a90e0 swift_beginAccess + 505
1    FAPanels                           0x000000010682df70 FAPanelController.observeValue(forKeyPath:of:change:context:) + 180
2    FAPanels                           0x000000010682eca0 @objc FAPanelController.observeValue(forKeyPath:of:change:context:) + 648
3    Foundation                         0x0000000106cb8368 NSKeyValueNotifyObserver + 349
4    Foundation                         0x0000000106c9893e -[NSObject(NSKeyValueObserverRegistration) _addObserver:forProperty:options:context:] + 255
5    Foundation                         0x0000000106c978a4 -[NSObject(NSKeyValueObserverRegistration) addObserver:forKeyPath:options:context:] + 103
6    FAPanels                           0x000000010680d210 FAPanelController.centerPanelVC.setter + 1192
7    FAPanels                           0x0000000106805760 FAPanelController.center(_:) + 72
8    FAPanels                           0x000000010682fd50 AppDelegate.application(_:didFinishLaunchingWithOptions:) + 963
9    FAPanels                           0x00000001068303d0 @objc AppDelegate.application(_:didFinishLaunchingWithOptions:) + 186
10   UIKit                              0x0000000108e07f98 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 267
11   UIKit                              0x0000000108e089bd -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4105
12   UIKit                              0x0000000108e0e7ab -[UIApplication _runWithMainScene:transitionContext:completion:] + 1720
13   UIKit                              0x00000001091bda6c __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 111
14   UIKit                              0x0000000109580125 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153
15   UIKit                              0x00000001091bd908 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 249
16   UIKit                              0x00000001091bdb8b -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 693
17   UIKit                              0x0000000109af05b7 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 240
18   UIKit                              0x0000000109af03ba -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 444
19   UIKit                              0x00000001097f230e __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 420
20   UIKit                              0x00000001099e44a2 _performActionsWithDelayForTransitionContext + 100
21   UIKit                              0x00000001097f21c7 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 231
22   UIKit                              0x000000010957f693 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 392
23   UIKit                              0x0000000108e0d4d9 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 523
24   UIKit                              0x00000001093c26d7 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 369
25   FrontBoardServices                 0x000000010e478222 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 338
26   FrontBoardServices                 0x000000010e480d7e __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 235
27   libdispatch.dylib                  0x000000010c67234c _dispatch_client_callout + 8
28   libdispatch.dylib                  0x000000010c6776f4 _dispatch_block_invoke_direct + 593
29   FrontBoardServices                 0x000000010e4ac756 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
30   FrontBoardServices                 0x000000010e4ac254 -[FBSSerialQueue _performNext] + 464
31   FrontBoardServices                 0x000000010e4ac966 -[FBSSerialQueue _performNextFromRunLoopSource] + 45
32   CoreFoundation                     0x00000001078d4ee0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
33   CoreFoundation                     0x0000000107973fc0 __CFRunLoopDoSource0 + 81
34   CoreFoundation                     0x00000001078b9830 __CFRunLoopDoSources0 + 185
35   CoreFoundation                     0x00000001078b89d0 __CFRunLoopRun + 1279
36   CoreFoundation                     0x00000001078b85c0 CFRunLoopRunSpecific + 409
37   GraphicsServices                   0x000000010ed329a4 GSEventRunModal + 62
38   UIKit                              0x0000000108e108af UIApplicationMain + 159
39   FAPanels                           0x0000000106830c70 main + 55
40   libdyld.dylib                      0x000000010c6ef3c4 start + 1
(lldb) 

Unknown Class

I've followed the instructions for install but I keep getting this error. Also, even when I copy the sample project onto a new project. Any idea?

2017-08-03 00:46:19.745949-0500 menu[82818:17871549] Unknown class _TtC4menu17FAPanelController in Interface Builder file.
Could not cast value of type 'UIViewController' (0x1110a33f8) to 'FAPanels.FAPanelController' (0x10e28d4a0).
2017-08-03 00:46:19.981588-0500 menu[82818:17871549] Could not cast value of type 'UIViewController' (0x1110a33f8) to 'FAPanels.FAPanelController' (0x10e28d4a0).
(lldb)

Step of installation into an existing project

It's possibile to describe, step by step, the process to install and import into an existing project your fantastic FAPanels?

I've installed POD ..... ok.
But then which files I have to import in my project, starting for the projects FAPanels files?

Thanks in advance

Can't remove panel

when I try to remove a panel:

panel!.left(nil)

I get the following error:

Nil is not compatible with expected argument type 'UIViewController'

how to reload rootviewcontroller?

Hey

I am using fapanels in my application it's working fine in my app.
but I implemented the localization in my app for localization we need to reload rootview controller to change the language without close the app.
I tried multiple ways to reload rootview controller but it's not working.

Any idea? please let me know if you have any idea of this??

Thanks :)

Shadow not showing for right side menu

Every thing's OK with the left side menu's shadow, but there isn't shadow for right side menu.
I tried below code, and seems it only works for left side:
rootController.configs.shadowOppacity = 0.15

Shifting shadow offset to the left also didn't help:
rootController.configs.shadowOffset = CGSize(width: -5, height: 0)

Any suggestions to show shadow for the left menu too?

Problem with closed menu.

When I call openCenter(animated: true), the menu closes without animation and the animation is opened broken.
Please add a method to the closeMenu() that would work like something the user clicks on the central view.

viber image

Problem with closed menu.

@fahidattique55
I need to add a button on the left menu which would close it. I used this method for openCenter(animated: true). But when you click on the menu button closed without animation. And with the subsequent calls the menu animation was not smooth as it was before calling the method openCenter(animated: true).
Correct it please, if possible, and add the method to closeMenu(animated: true).

Rewrite access control from public to open

In this issue, I just want to discuss an ability get access for each user of your framework to create custom subclasses inheriting from the FAPanelController class and override any method, which he/she prefer.

It's quite simple, and I guess, it'll be such a cool way to interact with your framework if need.

Swift 3 @objc inference in Swift 4 mode is deprecated

Xcode shows me this warning:

The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "FAPanel" target.
Can you fix it?

uinavigation.

is it possible to implement it on a uiviewcontroller without using a navigation viewcontroller?

How to get topview navigation in Appdelegate ?

Hi Bro,
I try your Menu Its working Good . Great Job
I have one Problem . I need top view controller / Current View Controller how to i get ?


if var topController = UIApplication.shared.keyWindow?.rootViewController {
            while let presentedViewController = topController.presentedViewController {
                topController = presentedViewController
            }
            print(topController)
            // topController should now be your topmost view controller
        }

I try this method its showing
<menu.FAPanelController: 0x102014e00>
i need Current View Controller not this one
Thank you
screenshot 2018-12-04 at 6 15 59 am

Isaac

Internal protection

I'm a n00bie in Swift and Xcode, and i can't understand the problem...
I can't call that function because is declared "internal", i tried to remove the internal declaration, but nothing.
Could someone help me?

schermata 2018-11-05 alle 08 31 36

FAPanel configuration issue

i followed instructions step-by-step and integrated FApanel. I can see the left panel but facing issue when trying to change configuration of left menu. Thanks.
screen shot 2017-08-01 at 2 38 12 pm

Orientation in iPad

I have set the rightPanelPosition = .front and if I rotate the device with the left panel visible, I can see the panel goes to back automatically. The centre view controller moves to the right.

I can't navigate user to desired viewcontroller

First I must thank you for this elegant framework. The panel works fine, I can travel between viewControllers on the left menu, but the problem (or my struggle) starts when I try to navigate the user from the opened viewController to another viewController. I want to use the present method but I can't make it work. When I use the panel!.center(centerVC) it presents weirdly(shown below).

simulator screen shot - iphone se - 2018-11-28 at 09 11 22

Import file issue

Hi, i'm importing the FAPanels but it is showing an error that no such module. I have properly installed the pods but it is showing such issue.
Second one i want to ask that in my centerVC how can i open LeftFAPanel in click of button and same with other View controllers just on click of a button?
It would be more better if u have a video tutorial also.

Splitview

It would be most ideal if this control would also support a splitview configuration, where multiple panels are in view and active at the same time. Similar to JASidePanels, but of course in Swift.

As my requirement is to have sliding panels on an iPad in Portrait mode, but static splitview of those panels when in Landscape mode.

Any future consideration of such a feature?

Add sidemenu callback

Hi!
This is very cool library and it was integrated into my application. That's great!
However, I would like to know when the side menu was closed or opened. For ex: The left menu contain so feature, that I dont want user to access right now, so everytime user try to open the menu, I want to notify user about that and recommend user to upgrade to paid version...
That is very handy to know when user close/open the side menu or event change side or center view. That help application can manage side menu completely

Please think about that and if it could available in some update later, that would be awesome!!

Thank

Create an example project

Working with your framework, I guess it will be amazing if a new user will be able not just look at README throughout working with FAPnels, but if he/she could download a small demo project with some easy-to-implement features and can touch it deeper, interacting and adapting to work with the framework in parallel.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.