JTRevealSidebarDemo 2.2.1

JTRevealSidebarDemo 2.2.1

测试已测试
语言编程语言 Obj-CObjective C
授权协议 MIT
发布上次发布2014年12月

James Tang 维护。



  • 作者
  • James Tang

JTRevealSidebarV2

这是一个 iOS objective-c 库模板,用于模拟新 Facebook 应用和 Path 应用的侧边栏布局。
JTRevealSidebarV2 旨在成为一个真正灵活和可重用的解决方案,它已经被精心实现。

它是在 iOS 4.3 和 5.0 设备下开发的,样例代码使用 ARC 编写,但该库本身应与 ARC 和非 ARC 兼容。

演示

Initialized Left Revealed Left Selected Right Revealed New Pushed New Right Revealed

摘要

在 JTRevealSidebarV2 中,所有侧边栏都应被视为导航项,每个侧边栏都应能够通过当前视图控制器直接配置。
它设计用于与 UINavigationController 一起使用,但从技术上讲,它应在其他 UIViewControllers 子类上也能工作。

如何使用它

安装

将 JTRevealSidebarV2/ 中的所有头文件和实现文件包含到您的项目中。

设置您的第一个侧边栏,配置您的 viewController 并遵循 JTRevealSidebarV2Delegate

@interface ViewController () <JTRevealSidebarV2Delegate>
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.revealSidebarDelegate = self;
}
/*
:
:
*/
#pragma mark JTRevealSidebarDelegate

// This is an examle to configure your sidebar view through a custom UIViewController
- (UIView *)viewForLeftSidebar {
    // Use applicationViewFrame to get the correctly calculated view's frame
    // for use as a reference to our sidebar's view 
    CGRect viewFrame = self.navigationController.applicationViewFrame;
    UITableViewController *controller = self.leftSidebarViewController;
    if ( ! controller) {
        self.leftSidebarViewController = [[SidebarViewController alloc] init];
        self.leftSidebarViewController.sidebarDelegate = self;
        controller = self.leftSidebarViewController;
        controller.title = @"LeftSidebarViewController";
    }
    controller.view.frame = CGRectMake(0, viewFrame.origin.y, 270, viewFrame.size.height);
    controller.view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
    return controller.view;
}

// This is an examle to configure your sidebar view without a UIViewController
- (UIView *)viewForRightSidebar {
    // Use applicationViewFrame to get the correctly calculated view's frame
    // for use as a reference to our sidebar's view 
    CGRect viewFrame = self.navigationController.applicationViewFrame;
    UITableView *view = self.rightSidebarView;
    if ( ! view) {
        view = self.rightSidebarView = [[UITableView alloc] initWithFrame:CGRectZero];
        view.dataSource = self;
        view.delegate   = self;
    }
    view.frame = CGRectMake(self.navigationController.view.frame.size.width - 270, viewFrame.origin.y, 270, viewFrame.size.height);
    view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
    return view;
}

// Optional delegate methods for additional configuration after reveal state changed
- (void)didChangeRevealedStateForViewController:(UIViewController *)viewController {
    // Example to disable userInteraction on content view while sidebar is revealing
    if (viewController.revealedState == JTRevealedStateNo) {
        self.view.userInteractionEnabled = YES;
    } else {
        self.view.userInteractionEnabled = NO;
    }
}

交互和显示您的侧边栏

@implementation ViewController
/*
:
:
*/
#pragma mark Action

- (void)revealLeftSidebar:(id)sender {
    [self.navigationController toggleRevealState:JTRevealedStateLeft];
}

- (void)revealRightSidebar:(id)sender {
    [self.navigationController toggleRevealState:JTRevealedStateRight];
}

@end

已知问题

方向改变不是官方完成的功能,主要需要修复的是旋转动画和在 AppDelegate 中创建的容器的必要性。如果您有任何优雅的解决方案,请告诉我,并向我发送拉取请求!
请转到 JTRevealSidebarV2/ViewController.h 并将 EXPERIEMENTAL_ORIENTATION_SUPPORT 更改为 1 以进行测试。

2012年3月29日更新:添加了切换显示状态的方法,还添加了示例以在侧边栏显示时禁用用户交互

2012年1月31日更新
改进了方向支持,动画更出色,现在您需要将 <QuartzCore/QuartzCore.h> 添加到您的项目中。

2012年2月1日更新:固定了当在横屏模式下首次显示侧边栏视图时的错误起始位置(实验性)。方向支持应该准备好了!

提示

请注意检查JTRevealSidebarDemoV2/ViewController.m中的示例代码,欢迎提供反馈和拉取请求。谢谢!

James