An implementation of the sliding menu found in various iOS apps.

Related tags

Menu ViewDeck
Overview

Logo

CocoaPods Version GitHub Tag GitHub Release

Semantic Versioning License Platform

IIViewDeckController

ViewDeck is a framework to manage side menus of all kinds. It supports left and right menus and manages the presentation of the side menus both programmatically and through user gestures.

The heart of ViewDeck is IIViewDeckController, which is a container view controller. You can then assign your center view controller to it as well as side view controllers. IIViewDeckController makes sure your content view controllers are added to the view controller hierarchy their views are added to the view hierarchy when needed.

ViewDeck does not provide any kind of configurable menus. It is up to you to assign your center and side view controllers to ViewDeck so that ViewDeck can then take over and present them as necessary.

IIViewDeckController supports both a left and a right side view controller and of course you can also only use one side. You can open and close the side views programmatically, e.g. through a tap of a button. By default IIViewDeckController also listens to swipe gestures by the user and interactively opens the side views accordingly.

Of course ViewDeck plays nice with existing container view controllers such as UINavigationController or UITabBarController.

Requirements

  • Base SDK: iOS 10
  • Deployment Target: iOS 8.0 or greater
  • Xcode 8.x

Try it out

The easiest way to try out ViewDeck is using cocoapods. By running pod try ViewDeck an Xcode project will be created that runs the demo app. Of course you can also simply check out the repository and run the example app there. Just open the ViewDeckExample.xcworkspace file in the Example folder and run it.

Demo video & Screenshots

You're probably curious how it looks. Here's some shots from the example app:

ViewDeck on iPhone

ViewDeck on iPad

See the controller in action:

IMAGE ALT TEXT HERE

Installation

CocoaPods

Integrating ViewDeck via CocoaPods is the easiest and fastest way to get started. Simply add the following line into your Podfile:

pod 'ViewDeck'

This will get you the latest ViewDeck version every time you type pod update in your terminal.

If you prefer a more conservative integration, you can also go with the following line:

pod 'ViewDeck', '~> 3.0'

This will update all 3.x version if you execute pod update but it will not update to version 4.x once this is released. ViewDeck follows semantic versioning, meaning that within a given major version (currently 3.x) there will be no breaking changes. You may see deprecations appear on methods that are likely to go away in the next major release but until then they will continue to work.

After integrating ViewDeck via CocoaPods, all you need to do is #import <ViewDeck/ViewDeck.h> in a class where you want to use ViewDeck.

Manually

  • Download the latest ViewDeck release from the release section
  • Move the ViewDeck.framework into your Xcode project

Getting started

ViewDeck supports a left and a right side view controller. Each of these can be nil (if it is, no panning or opening to that side will work and gesture recognizers for this side are deactivated). The base class for everything is IIViewDeckController. A typical view deck configuration looks like this:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
	MyCenterViewController *centerViewController = [MyCenterViewController new];
	UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:centerViewController];
	
	MySideViewController *sideViewController = [MySideViewController new];
	UINavigationController *sideNavigationController = [[UINavigationController alloc] initWithRootViewController:sideViewController];
	
	IIViewDeckController *viewDeckController = [[IIViewDeckController alloc] initWithCenterViewController:navigationController rightViewController:sideNavigationController];
	
	self.window.rootViewController = viewDeckController;
	[self.window makeKeyAndVisible];
	return YES;
}

Switching controllers

You can also switch view controllers in mid flight. Just assign a view controller to the appropriate property and the view deck controller will do the rest:

// prepare view controllers
UIViewController* newController = [[UIViewController alloc] init];
self.viewDeckController.rightController = newController;

You can also use this to remove a side controller by just setting it to nil.

Accessing the view deck controller

Like UINavigationViewController the IIViewDeckController assigns itself to its childviews. You can use the viewDeckController property to get access to the enclosing view deck controller:

#import <ViewDeck/ViewDeck.h>
...
[self.viewDeckController openSide:IIViewDeckSideRight animated:YES];

If the controller is not enclosed by IIViewDeckController, this property returns nil.

Controlling the side’s size

ViewDeck tries to embed into UIKit as nice as possible and therefore leverages a lot of already existing hooks. In order to control a side view controller’s size on the screen, you simply set its preferredContentSize. ViewDeck will respect the width of this size while making sure the height is always the height of the view deck controller itself.

Customizing the side’s appearance and animations

You can customize a lot about how ViewDeck presents side view controllers. Check out the documentation on -[IIViewDeckController animatorForTransitionWithContext:] and IIViewDeckTransitionAnimator.

Special Thanks

Special thanks to Tom Adriaenssen who started this project and created a very great framework that helps so many developers. Sadly he can no longer maintain this framework. Check out his blog if you want to find out why, it’s actually pretty good news, so congratulations, Tom! :)

Very special thanks to the awesome Samo Korosec for designing the beautiful logo for ViewDeck! He is a very great designer and a very funny colleague. If you need cool app design work done, check him out!

Credits

I would appreciate it to mention the use of this code somewhere if you use it in an app. On a website, in an about page, in the app itself, whatever. Or let me know by email or through github. It's nice to know where one's code is used. Also, if you have a cool app that uses view deck, and you want it to be listed here, let me know!

License

IIViewDeckController published under the MIT license:

Copyright (C) 2011-2015, ViewDeck

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • Rotation on iPad doesn't work correctly for me from iOS 8 and greater.

    Rotation on iPad doesn't work correctly for me from iOS 8 and greater.

    iPad. 2.2.11 and 2.4.1 versions.

    1. I launch my app in landscape open left controller (menu), it has correct width.
    2. Rotate device to portrait orientation and menu has 44 points width for iOS 8 and greater. Device with IOS 7 works correctly. This happen because arrangeViewsAfterRotation launch with same self.referenceBounds.size and _preRotationSize. _preRotationSize change in shouldAutorotate twice before and after rotation and then execute arrangeViewsAfterRotation method. By this reason self.referenceBounds.size Equal _preRotationSize.
    3. I try remove from shouldAutorotate: _preRotationSize = self.referenceBounds.size; _preRotationCenterSize = self.centerView.bounds.size; _willAppearShouldArrangeViewsAfterRotation = self.interfaceOrientation;
    4. Add to willRotateToInterfaceOrientation if (_preRotationSize.width == 0) { _preRotationSize = self.referenceBounds.size; _preRotationCenterSize = self.centerView.bounds.size; _preRotationIsLandscape = UIInterfaceOrientationIsLandscape(self.interfaceOrientation); _willAppearShouldArrangeViewsAfterRotation = self.interfaceOrientation; } And it works correctly for me in version 2.2.11. In version 2.4.1 it works only if i open left menu (landscape) - close left menu - rotate (portrait) - open left menu. If I open left menu(landscape) - rotate(portrait) left menu has 44 width then black view and centre controller with correct offset. May be I not set and configure view deck correctly? Or bug still present ?
    bug 
    opened by SergeyBulyno 33
  • IIViewDeck crashing when trying to load uiwebview

    IIViewDeck crashing when trying to load uiwebview

    I have a tableview in the left controller and I am trying to open a uiwebview in the center controller. It crashes after I try to load the URL and it does not start loading.

    It crashes suddenly with the error objc retain EXC_BAD_ACCESS code = 1 The last method in the log is applyShadow ...

    I tried several this but I am not confortable messing around with the iiviewdeck framework.

    Have you got any solution for this?

    If you need further logs just tell me.

    Thank you and best regards,

    João Garcia

    opened by jonypz 24
  • Issue with -wantsFullScreenLayout on child controllers

    Issue with -wantsFullScreenLayout on child controllers

    I hate to dig up skeletons, but this one's been haunting me: issue #16. I've got a tableview on my left view controller, navigation controller-embedded tableview in my center, and nothing in my right. Those views are all fine, but when I push a view onto the stack using the center controller, the new view is supposed to wantsFullScreenLayout. However, it doesn't; on a phone, the view is clipped at 416 points high.

    When my child view calls -initWithNibName:bundle:, it asks for full screen layout with self.wantsFullScreenLayout = YES.

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
        if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
            self.wantsFullScreenLayout = YES;
        }
        return self;
    }
    

    When it calls -viewWillAppear:animated, it asks its navigation controller to switch its elements to be translucent (by way of flag=YES), which is this bit of code.

    - (void)makeTranslucent:(BOOL)flag {
        // Default tint color. Navbar style is default, whereas status bar is black opaque.
        UIColor *color = [UIColor colorWithHexString:@"#3586A9"];
        UIBarStyle style = UIBarStyleDefault;
        UIStatusBarStyle statusStyle = UIStatusBarStyleBlackOpaque;
    
        if (flag) {
            // If we want 'translucency', set the navbar to black...
            style = UIBarStyleBlack;
            // ...and the status bar to black-translucent.
            statusStyle = UIStatusBarStyleBlackTranslucent;
            color = nil;
        }
    
        self.navigationBar.barStyle = style;
        self.navigationBar.tintColor = color;
        self.navigationBar.translucent = flag;
        // This doesn't work; I wish it did:
        // self.viewDeckController.wantsFullScreenLayout = flag;
        [[UIApplication sharedApplication] setStatusBarStyle:statusStyle animated:YES];
    }
    

    This all worked before I pulled out my tab bar controller and replaced it with ViewDeck, which is my window's rootViewController. Any thoughts? Need more code? I'd like to be able to have ViewDeck honor it's center controller's child view's request for full screen.

    When I drop this into -initWithCenterViewController:centerController, it more-or-less works (my child view gets its full screen layout, but other stuff gets funky, like on rotation).

    - (id)initWithCenterViewController:(UIViewController*)centerController {
        if ((self = [super initWithNibName:nil bundle:nil])) {
            // ...one, two, skip a few...
            self.wantsFullScreenLayout = YES;
        }
        return self;
    }
    
    bug won't fix 
    opened by kreeger 18
  • rightViewController not resizing width - I've tried everything

    rightViewController not resizing width - I've tried everything

    Hello,

    I want to start off by thanking you for creating and sharing such an easy-to-use, yet powerful library. I am ripping my hair out trying to figure out how to resize the width of the rightViewController. I have went through the previous issues and tried everything and have even went onto Google and SOF. Perhaps there is something I am missing? I am using storyboards. My rightViewController is a UINavigationController. I like the rightLedgeSize, I just want the rightViewController to shrink in width to match the rightLedgeSize. Any help will be greatly appreciated. This is a genuine question. Thanks!

    Here is a screenshot of what it looks like:

    Screen Shot 2013-02-04 at 10 34 41 PM

    opened by jeffaburt 17
  • Navigation push view controller is not working in IIViewDeckViewController in iOS9.

    Navigation push view controller is not working in IIViewDeckViewController in iOS9.

    RSRightPanelViewController *rightController = [[RSRightPanelViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];
    RSScheduleViewController *centerController = [[RSScheduleViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];
    IIViewDeckController *viewDeckController = [[IIViewDeckController alloc] initWithCenterViewController:centerController rightViewController:rightController];
    viewDeckController.rightSize = 100;
    [viewDeckController disablePanOverViewsOfClass:NSClassFromString(@"_UITableViewHeaderFooterContentView")];
    [self.navigationController pushViewController:viewDeckController animated:YES];
    

    I have run the above code in Xcode6.4 it is working perfectly but, same code is not working in Xcode7. RSScheduleViewController(centerController) view is in transparent. Please help me.

    help awaiting input 
    opened by dsarathb 16
  • Navigation controller in centerView pops last view controller when panning

    Navigation controller in centerView pops last view controller when panning

    In the example project "Navigation Example" there is an unexpected behavior when panning to the left view controller within the navigation bar of the center view. In this case the navigation controller of the center view controller pops its last controller during the sliding animation.

    opened by orschaef 16
  • Wrong logic in panned method: delegates get called twice

    Wrong logic in panned method: delegates get called twice

    In a very simple setup with a center view that support panning and a right viecontroller, when you pan the center, the delegates "didOpen" and "didClose" get called twice.

    bug 
    opened by sgabello 13
  • _centerController dealloc never called

    _centerController dealloc never called

    Hi

    When I changed the _centerController with new view controller by UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:aVC]; self.viewDeckController.centerController = nav;

    the previous _centerController's dealloc is not being called.

    Any help or suggestions ?

    bug awaiting input 
    opened by maulikpat 12
  • Does not call delegate methods when center view is dragged back to the edge and released

    Does not call delegate methods when center view is dragged back to the edge and released

    One example is a scenario with a left controller and a center controller, and the interactivity set to IIViewDeckCenterHiddenNotUserInteractiveWithTapToClose. Open the left controller, then slowly drag the center one back, not releasing until it is at the left edge. The code in "panned" will call showCenterView:YES, but the two cases will not test positive, since once the center dragging is complete the leftController.view.hidden is YES, so closeLeftViewAnimated is never called (and even if it was it wouldn't work since it is already closed) and the delegate methods are never called, so the delegate never receives viewDeckControllerDidCloseLeftView.

    opened by lhasiuk 12
  • View hierarchy shifted when rotating while in fullscreen mode

    View hierarchy shifted when rotating while in fullscreen mode

    Starting in portrait rotation:

    1. Push/present a view that hides the status bar and enters full screen mode
    2. Allow the view to be rotated
    3. Pop/Dismiss that view
    4. The center view initially appears unaffected, the left and right views are shifted up vertically the height of the status bar (underneath it)
    5. rotate the app with the centerview in either 3 positions
    6. the center view will now be shifted down the height of the status bar, the side views no appear normal Starting in landscape rotation
    7. most of the views get re-sized unreadable/unknown sizes and locations

    This can be easily reproduced by added a simple viewcontroller to the test project and in it's viewwillappear and viewwilldissapear hide and show the status bar. I just re-used the camera button to hide/show the testview.

    opened by gzphreak 12
  • iOS 8 error: adding a root view controller UITabBarController as a child of view

    iOS 8 error: adding a root view controller UITabBarController as a child of view

    I'm running an app running off the base sdk iOS 8 and I'm running into a problem with my code:

    When I init with my center controller as my app delegate's rootviewcontroller, I get the following error in iOS 8:

    adding a root view controller <UITabBarController: 0x11425fc0> as a child of view

    Is there a workaround for this?

    bug awaiting input 
    opened by swl367 11
  • chore(deps): bump tzinfo from 1.2.2 to 1.2.10

    chore(deps): bump tzinfo from 1.2.2 to 1.2.10

    Bumps tzinfo from 1.2.2 to 1.2.10.

    Release notes

    Sourced from tzinfo's releases.

    v1.2.10

    TZInfo v1.2.10 on RubyGems.org

    v1.2.9

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    TZInfo v1.2.9 on RubyGems.org

    v1.2.8

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    TZInfo v1.2.8 on RubyGems.org

    v1.2.7

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    TZInfo v1.2.7 on RubyGems.org

    v1.2.6

    • Timezone#strftime('%s', time) will now return the correct number of seconds since the epoch. #91.
    • Removed the unused TZInfo::RubyDataSource::REQUIRE_PATH constant.
    • Fixed "SecurityError: Insecure operation - require" exceptions when loading data with recent Ruby releases in safe mode.
    • Fixed warnings when running on Ruby 2.7. #106 and #111.

    TZInfo v1.2.6 on RubyGems.org

    v1.2.5

    • Support recursively (deep) freezing Country and Timezone instances. #80.
    • Allow negative daylight savings time offsets to be derived when reading from zoneinfo files. The utc_offset and std_offset are now derived correctly for Europe/Dublin in the 2018a and 2018b releases of the Time Zone Database.

    TZInfo v1.2.5 on RubyGems.org

    v1.2.4

    • Ignore the leapseconds file that is included in zoneinfo directories installed with version 2017c and later of the Time Zone Database.

    TZInfo v1.2.4 on RubyGems.org

    v1.2.3

    • Reduce the number of String objects allocated when loading zoneinfo files. #54.
    • Make Timezone#friendly_identifier compatible with frozen string literals.
    • Improve the algorithm for deriving the utc_offset from zoneinfo files. This now correctly handles Pacific/Apia switching from one side of the International Date Line to the other whilst observing daylight savings time. #66.
    • Fix an UnknownTimezone exception when calling transitions_up_to or offsets_up_to on a TimezoneProxy instance obtained from Timezone.get_proxy.
    • Allow the Factory zone to be obtained from the Zoneinfo data source.
    • Ignore the /usr/share/zoneinfo/timeconfig symlink included in Slackware distributions. #64.

    ... (truncated)

    Changelog

    Sourced from tzinfo's changelog.

    Version 1.2.10 - 19-Jul-2022

    Version 1.2.9 - 16-Dec-2020

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    Version 1.2.8 - 8-Nov-2020

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    Version 1.2.7 - 2-Apr-2020

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    Version 1.2.6 - 24-Dec-2019

    • Timezone#strftime('%s', time) will now return the correct number of seconds since the epoch. #91.
    • Removed the unused TZInfo::RubyDataSource::REQUIRE_PATH constant.
    • Fixed "SecurityError: Insecure operation - require" exceptions when loading data with recent Ruby releases in safe mode.
    • Fixed warnings when running on Ruby 2.7. #106 and #111.

    Version 1.2.5 - 4-Feb-2018

    • Support recursively (deep) freezing Country and Timezone instances. #80.
    • Allow negative daylight savings time offsets to be derived when reading from zoneinfo files. The utc_offset and std_offset are now derived correctly for Europe/Dublin in the 2018a and 2018b releases of the Time Zone Database.

    ... (truncated)

    Commits
    • 0814dcd Fix the release date.
    • fd05e2a Preparing v1.2.10.
    • b98c32e Merge branch 'fix-directory-traversal-1.2' into 1.2
    • ac3ee68 Remove unnecessary escaping of + within regex character classes.
    • 9d49bf9 Fix relative path loading tests.
    • 394c381 Remove private_constant for consistency and compatibility.
    • 5e9f990 Exclude Arch Linux's SECURITY file from the time zone index.
    • 17fc9e1 Workaround for 'Permission denied - NUL' errors with JRuby on Windows.
    • 6bd7a51 Update copyright years.
    • 9905ca9 Fix directory traversal in Timezone.get when using Ruby data source
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump i18n from 0.7.0 to 0.9.5

    chore(deps): bump i18n from 0.7.0 to 0.9.5

    Bumps i18n from 0.7.0 to 0.9.5.

    Release notes

    Sourced from i18n's releases.

    v0.9.5

    • #404 reported a regression in 0.9.3, which wasn't fixed by 0.9.4. #408 fixes this issue.

    Thanks @​wjordan!

    v0.9.4

    • Fixed a regression with chained backends introduced in v0.9.3 (#402) - #405 - bug report / #407 - PR to fix
    • Optimize Backend::Simple#available_locales - reports are that this is now 4x faster than previously - #406

    v0.9.3

    (For those wondering where v0.9.2 went: I got busy after I pushed the commit for the release, so there was no gem release that day. I am not busy today, so here is v0.9.3 in its stead. This changelog contains changes from v0.9.1 -> v0.9.3)

    • I18n no longer stores translations for unavailable locales. #391.
    • Added the ability to interpolate with arrays #395.
    • Documentation for lambda has been corrected. #396
    • I18n will use oj -- a faster JSON library -- but only if it is available. #398
    • Fixed an issue with translate and default: [false] as an option. #399
    • Fixed an issue with translate with nil and empty keys. #400
    • Fix issue with disabled subtrees and pluralization for KeyValue backend #402

    Thank you to @​stereobooster, @​fatkodima and @​lulalala for the patches that went towards this release. We appreciate your efforts!

    v0.9.1

    • Reverted Hash#slice behaviour introduced with #250 - See #390.
    • Fixed a regression caused by #387, where translations may have returned a not-helpful error message - See #389

    v0.9.0

    • Made Backend::Memoize threadsafe. See #51 and #352.
    • Added a middleware I18n::Middleware that should be used to ensure that i18n config is reset correctly between requests. See #381 and #382.

    v0.8.6

    Fixed a small regression introduced in v0.8.5 when using fallbacks - See #378

    v0.8.5

    • Improved error message for MissingPluralizationKey error - See #371
    • Fixed a thread issue when calling translate when fallbacks were enabled - See #369

    v0.8.4

    Reverted #236 - "Don't allow nil to be submitted as a key to I18n.translate" - See #370

    v0.8.3

    I18n::Gettext#plural_keys will now return a hash from Gettext if no arguments are provided - svenfuchs/i18n#122 Fixed a bug where passing false to translate would not translate that value - svenfuchs/i18n#367

    v0.8.2

    Do not allow nil to be passed to translate - svenfuchs/i18n#236

    ... (truncated)

    Commits
    • 416859a Bump to 0.9.5
    • 5c28de8 Lock Rake to 12.2.x versions
    • 29fe565 Merge pull request #408 from wjordan/enforce_available_locales_false_fix
    • 596a71d store translations for unavailable locales if enforce_available_locales is false
    • 888abcb Bump to 0.9.4
    • ba8b206 Merge pull request #407 from fatkodima/fix-key-value-subtrees
    • 9ddc9f5 Merge pull request #406 from jhawthorn/optimize_available_locales
    • 77c26aa Fix Chained backend with KeyValue
    • 7eb3576 Optimize Backend::Simple#available_locales
    • 7c6ccf4 Bump to 0.9.3
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump cocoapods-downloader from 1.1.2 to 1.6.3

    chore(deps): bump cocoapods-downloader from 1.1.2 to 1.6.3

    Bumps cocoapods-downloader from 1.1.2 to 1.6.3.

    Release notes

    Sourced from cocoapods-downloader's releases.

    1.6.3

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1

    Enhancements
    • None.
    Bug Fixes
    • Fix "can't modify frozen string" errors when pods are integrated using the branch option
      buju77 #10920

    1.5.0

    ... (truncated)

    Changelog

    Sourced from cocoapods-downloader's changelog.

    1.6.3 (2022-04-01)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2 (2022-03-28)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1 (2022-03-23)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0 (2022-03-22)

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1 (2021-09-07)

    Enhancements
    • None.

    ... (truncated)

    Commits
    • c03e2ed Release 1.6.3
    • f75bccc Disable Bazaar tests due to macOS 12.3 not including python2
    • 52a0d54 Merge pull request #128 from CocoaPods/validate_before_dl
    • d27c983 Ensure that the git pre-processor doesn't accidentally bail also
    • 3adfe1f [CHANGELOG] Add empty Master section
    • 591167a Release 1.6.2
    • d2564c3 Merge pull request #127 from CocoaPods/validate_before_dl
    • 99fec61 Switches where we check for invalid input, to move it inside the download fun...
    • 96679f2 [CHANGELOG] Add empty Master section
    • 3a7c54b Release 1.6.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • changing origin x of centerViewController.view (I don't need parallax center)

    changing origin x of centerViewController.view (I don't need parallax center)

    file : IIViewDeckLayoutSupport.m method : - (CGRect)frameForSide:(IIViewDeckSide)side openSide:(IIViewDeckSide)openSide; line : 83

    CGFloat xOffset = (openSide == IIViewDeckSideLeft ? maxSize.width * 0.1 : -maxSize.width * 0.1);

    Why did you hardcoded the value (0.1)? I need to change the value above via new property of IIViewDeckController in IIViewDeckLayoutSupport.

    opened by leechoohyoung 0
Releases(3.1.0)
  • 3.1.0(Dec 29, 2016)

  • 3.0.1(Dec 2, 2016)

  • 3.0.0(Oct 22, 2016)

  • 3.0.0-beta(Sep 24, 2016)

  • 2.4.2(Mar 27, 2016)

    • Fixes an issue where Key Value Observing was registered multiple times. (#521)
    • Fixes an incompatibility with old versions of Xcode. (#514)
    • Updates copyright notices for 2016.
    • Deprecates classes that aren't needed anymore for some time now.

    Please have a look at all deprecations you are seeing in your project. These APIs will go away in version 3.0.0. If you need them, please file an issue!

    Source code(tar.gz)
    Source code(zip)
    ViewDeck-2.4.2.zip(926.36 KB)
  • 2.4.1(Dec 2, 2015)

    • Fix an issue where the screen layout was broken when using IIViewDeckNavigationControllerIntegrated (#501)
    • Fix an issue where the view controller hierarchy was broken (#509)
    • Fix an issue when rotating the device while a side menu is open (#506)
    • Fix an issue when a view deck controller was deallocated (#451)
    Source code(tar.gz)
    Source code(zip)
    ViewDeck-2.4.1.zip(2.89 MB)
  • 2.4.0(Nov 8, 2015)

    • Fixes warnings when building with Xcode 7.1
    • Fixes various issues with shadows not rendered correctly
    • Fixes issues with Key Value Observing not deregistered properly
    • Fixes issues with the view controller hierarchy
    • Fixes issues when rotating the device
    • Deprecates a lot of methods in order to get ready for a 3.x release. If you don't agree with the deprecations, please open a new issue!
    Source code(tar.gz)
    Source code(zip)
    ViewDeck-2.4.0.zip(2.87 MB)
Owner
ViewDeck
ViewDeck
Panels is a framework to easily add sliding panels to your application

Panels is a framework to easily add sliding panels to your application. It takes care of the safe area in new devices and moving your panel when the k

Antonio Casero 1.5k Dec 14, 2022
SwiftySideMenu is a lightweight and easy to use side menu controller to add left menu and center view controllers with scale animation based on Pop framework.

SwiftySideMenu SwiftySideMenu is a lightweight, fully customizable, and easy to use controller to add left menu and center view controllers with scale

Hossam Ghareeb 84 Feb 4, 2022
A Slide Menu, written in Swift, inspired by Slide Menu Material Design

Swift-Slide-Menu (Material Design Inspired) A Slide Menu, written in Swift 2, inspired by Navigation Drawer on Material Design (inspired by Google Mat

Boisney Philippe 90 Oct 17, 2020
Slide-Menu - A Simple Slide Menu With Swift

Slide Menu!! Весь интерфейс создан через код

Kirill 0 Jan 8, 2022
EasyMenu - SwiftUI Menu but not only button (similar to the native Menu)

EasyMenu SwiftUI Menu but not only button (similar to the native Menu) You can c

null 10 Oct 7, 2022
Swift-sidebar-menu-example - Create amazing sidebar menu with animation using swift

 SWIFT SIDEBAR MENU EXAMPLE In this project I create a awesome side bar menu fo

Paolo Prodossimo Lopes 4 Jul 25, 2022
Hamburger Menu Button - A hamburger menu button with full customization

Hamburger Menu Button A hamburger menu button with full customization. Inspired by VinhLe's idea on the Dribble How to use it You can config the looks

Toan Nguyen 114 Jun 12, 2022
This is a spring slide menu for iOS apps - 一个弹性侧滑菜单

LLSlideMenu This is a spring slide menu for iOS apps 一个弹性侧滑菜单 弹性动画原理借鉴该项目中阻尼函数实现 Preview 预览 Installation 安装 pod 1.pod 'LLSlideMenu', '~> 1.0.6'

Li Lei 590 Dec 7, 2022
iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app. It is written in pure swift.

SlideMenuControllerSwift iOS Slide View based on iQON, Feedly, Google+, Ameba iPhone app. Installation CocoaPods pod 'SlideMenuControllerSwift' Carth

Yuji Hato 3.3k Dec 29, 2022
A simple side menu for iOS written in Swift.

ENSwiftSideMenu A lightweight flyover side menu component for iOS with the UIDynamic's bouncing animation, UIGestures and UIBlurEffect. Allows you to

Evgeny Nazarov 1.8k Dec 21, 2022
iOS Interactive Side Menu written in Swift.

Interactive Side Menu A customizable, interactive, auto expanding and collapsing side menu for iOS written in Swift. Here are some of the ways Interac

Handsome 706 Dec 15, 2022
A menu based on Medium iOS app.

Medium 1.8.168 menu in Swift. That is still one of my favorite menus because that is easy to use and looks beautiful.

Hiroki Nagasawa 322 May 28, 2022
A fully customizable popup style menu for iOS 😎

Guide Check out the documentation and guides for details on how to use. (Available languages:) English 简体中文 What's a better way to know what PopMenu o

Cali Castle 1.5k Dec 30, 2022
Simple side/slide menu control for iOS, no code necessary! Lots of customization. Add it to your project in 5 minutes or less.

▤ SideMenu If you like SideMenu, give it a ★ at the top right of this page. SideMenu needs your help! If you're a skilled iOS developer and want to he

Jon Kent 5.4k Dec 29, 2022
✨ Awesome Dropdown menu for iOS with Swift 5.0

The eligible dropdown menu for iOS, written in Swift 5, appears dropdown menu to display a view of related items when a user click on the dropdown menu. You can customize dropdown view whatever you like (e.g. UITableView, UICollectionView... etc)

Kyle Yi 1.3k Dec 26, 2022
iOS 7/8 style side menu with parallax effect.

RESideMenu iOS 7/8 style side menu with parallax effect inspired by Dribbble shots (first and second). Since version 4.0 you can add menu view control

Roman Efimov 7.2k Dec 28, 2022
RadialMenu is a custom control for providing a touch context menu (like iMessage recording in iOS 8) built with Swift & POP

RadialMenu Looking for help? For $150/hr I'll help with your RadialMenu problems including integrating it into your project. Email [email protected] t

Brad Jasper 297 Nov 27, 2022
The fastest zero-tap iOS menu.

⚡️ Quicklook The fastest zero-tap iOS menu CariocaMenu is a simple, elegant, fast navigation menu for your iOS apps. ?? Features Accessible from a sin

momo 779 Nov 11, 2022
Context menu similar to the one in the Pinterest iOS app

VLDContextSheet A clone of the Pinterest iOS app context menu. Example Usage VLDContextSheetItem *item1 = [[VLDContextSheetItem alloc] initWithTitle:

Vladimir Angelov 173 Mar 28, 2022