[
  {
    "path": ".gitignore",
    "content": "#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\nlibDBPlayer.release.a\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control\n#\n#Pods/\n"
  },
  {
    "path": "LeftSlide/AppDelegate.h",
    "content": "//\n//  AppDelegate.h\n//  LeftSlide\n//\n//  Created by huangzhenyu on 15/6/18.\n//  Copyright (c) 2015年 eamon. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"LeftSlideViewController.h\"\n\n@interface AppDelegate : UIResponder <UIApplicationDelegate>\n\n@property (strong, nonatomic) UIWindow *window;\n\n@property (strong, nonatomic) LeftSlideViewController *LeftSlideVC;\n@property (strong, nonatomic) UINavigationController *mainNavigationController;\n\n@end\n\n"
  },
  {
    "path": "LeftSlide/AppDelegate.m",
    "content": "//\n//  AppDelegate.m\n//  LeftSlide\n//\n//  Created by huangzhenyu on 15/6/18.\n//  Copyright (c) 2015年 eamon. All rights reserved.\n//\n\n#import \"AppDelegate.h\"\n#import \"MainPageViewController.h\"\n#import \"LeftSortsViewController.h\"\n\n@interface AppDelegate ()\n\n@end\n\n@implementation AppDelegate\n\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n    \n    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];\n    self.window.backgroundColor = [UIColor whiteColor];   //设置通用背景颜色\n    [self.window makeKeyAndVisible];\n    \n    MainPageViewController *mainVC = [[MainPageViewController alloc] init];\n    self.mainNavigationController = [[UINavigationController alloc] initWithRootViewController:mainVC];\n    LeftSortsViewController *leftVC = [[LeftSortsViewController alloc] init];\n    self.LeftSlideVC = [[LeftSlideViewController alloc] initWithLeftView:leftVC andMainView:self.mainNavigationController];\n    self.window.rootViewController = self.LeftSlideVC;\n    \n    [[UINavigationBar appearance] setBarTintColor:[UIColor purpleColor]];\n    return YES;\n}\n\n- (void)applicationWillResignActive:(UIApplication *)application {\n    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.\n    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.\n}\n\n- (void)applicationDidEnterBackground:(UIApplication *)application {\n    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.\n    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.\n}\n\n- (void)applicationWillEnterForeground:(UIApplication *)application {\n    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.\n}\n\n- (void)applicationDidBecomeActive:(UIApplication *)application {\n    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.\n}\n\n- (void)applicationWillTerminate:(UIApplication *)application {\n    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n}\n\n@end\n"
  },
  {
    "path": "LeftSlide/Base.lproj/LaunchScreen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"6214\" systemVersion=\"14A314h\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"6207\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"  Copyright (c) 2015年 eamon. All rights reserved.\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8ie-xW-0ye\">\n                    <rect key=\"frame\" x=\"20\" y=\"439\" width=\"441\" height=\"21\"/>\n                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"LeftSlide\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">\n                    <rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>\n                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"5cJ-9S-tgC\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"bottom\" constant=\"20\" id=\"Kzo-t9-V3l\"/>\n                <constraint firstItem=\"8ie-xW-0ye\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"MfP-vx-nX0\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"centerX\" id=\"ZEH-qu-HZ9\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"548\" y=\"455\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "LeftSlide/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "LeftSlide/Images.xcassets/leftbackiamge.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\",\n      \"filename\" : \"leftbackiamge.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "LeftSlide/Images.xcassets/menu.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"menu@2x.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "LeftSlide/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.eamon.$(PRODUCT_NAME:rfc1034identifier)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "LeftSlide/LeftSlideViewController/LeftSlideViewController.h",
    "content": "//\n//  LeftSlideViewController.h\n//  LeftSlideViewController\n//\n//  Created by huangzhenyu on 15/06/18.\n//  Copyright (c) 2015年 huangzhenyu. All rights reserved.\n\n#define kScreenSize           [[UIScreen mainScreen] bounds].size\n#define kScreenWidth          [[UIScreen mainScreen] bounds].size.width\n#define kScreenHeight         [[UIScreen mainScreen] bounds].size.height\n\n#define kMainPageDistance   100   //打开左侧窗时，中视图(右视图)露出的宽度\n#define kMainPageScale   0.8  //打开左侧窗时，中视图(右视图）缩放比例\n#define kMainPageCenter  CGPointMake(kScreenWidth + kScreenWidth * kMainPageScale / 2.0 - kMainPageDistance, kScreenHeight / 2)  //打开左侧窗时，中视图中心点\n\n#define vCouldChangeDeckStateDistance  (kScreenWidth - kMainPageDistance) / 2.0 - 40 //滑动距离大于此数时，状态改变（关--》开，或者开--》关）\n#define vSpeedFloat   0.7    //滑动速度\n\n#define kLeftAlpha 0.9  //左侧蒙版的最大值\n#define kLeftCenterX 30 //左侧初始偏移量\n#define kLeftScale 0.7 //左侧初始缩放比例\n\n#define vDeckCanNotPanViewTag    987654   // 不响应此侧滑的View的tag\n\n#import <UIKit/UIKit.h>\n#import \"UIView_extra.h\"\n\n@interface LeftSlideViewController : UIViewController\n\n//滑动速度系数-建议在0.5-1之间。默认为0.5\n@property (nonatomic, assign) CGFloat speedf;\n\n//左侧窗控制器\n@property (nonatomic, strong) UIViewController *leftVC;\n\n@property (nonatomic,strong) UIViewController *mainVC;\n//点击手势控制器，是否允许点击视图恢复视图位置。默认为yes\n@property (nonatomic, strong) UITapGestureRecognizer *sideslipTapGes;\n\n//滑动手势控制器\n@property (nonatomic, strong) UIPanGestureRecognizer *pan;\n\n//侧滑窗是否关闭(关闭时显示为主页)\n@property (nonatomic, assign) BOOL closed;\n\n\n/**\n @brief 初始化侧滑控制器\n @param leftVC 右视图控制器\n mainVC 中间视图控制器\n @result instancetype 初始化生成的对象\n */\n- (instancetype)initWithLeftView:(UIViewController *)leftVC\n                     andMainView:(UIViewController *)mainVC;\n\n/**\n @brief 关闭左视图\n */\n- (void)closeLeftView;\n\n\n/**\n @brief 打开左视图\n */\n- (void)openLeftView;\n\n/**\n *  设置滑动开关是否开启\n *\n *  @param enabled YES:支持滑动手势，NO:不支持滑动手势\n */\n- (void)setPanEnabled: (BOOL) enabled;\n\n@end\n"
  },
  {
    "path": "LeftSlide/LeftSlideViewController/LeftSlideViewController.m",
    "content": "//\n//  LeftSlideViewController.m\n//  LeftSlideViewController\n//\n//  Created by huangzhenyu on 15/06/18.\n//  Copyright (c) 2015年 huangzhenyu. All rights reserved.\n\n#import \"LeftSlideViewController.h\"\n\n\n@interface LeftSlideViewController ()<UIGestureRecognizerDelegate>\n{\n    CGFloat _scalef;  //实时横向位移\n}\n\n@property (nonatomic,strong) UITableView *leftTableview;\n@property (nonatomic,assign) CGFloat leftTableviewW;\n@property (nonatomic,strong) UIView *contentView;\n@end\n\n\n@implementation LeftSlideViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    // Do any additional setup after loading the view.\n}\n\n/**\n @brief 初始化侧滑控制器\n @param leftVC 左视图控制器\n mainVC 中间视图控制器\n @result instancetype 初始化生成的对象\n */\n- (instancetype)initWithLeftView:(UIViewController *)leftVC\n                     andMainView:(UIViewController *)mainVC\n{\n    if(self = [super init]){\n        self.speedf = vSpeedFloat;\n        self.leftVC = leftVC;\n        self.mainVC = mainVC;\n        [self addChildViewController:self.leftVC];\n        [self addChildViewController:self.mainVC];\n        //滑动手势\n        self.pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];\n        [self.mainVC.view addGestureRecognizer:self.pan];\n        \n        [self.pan setCancelsTouchesInView:YES];\n        self.pan.delegate = self;\n        \n        self.leftVC.view.hidden = YES;\n        \n        [self.view addSubview:self.leftVC.view];\n        \n        //蒙版\n        UIView *view = [[UIView alloc] init];\n        view.frame = self.leftVC.view.bounds;\n        view.backgroundColor = [UIColor blackColor];\n        view.alpha = 0.5;\n        self.contentView = view;\n        [self.leftVC.view addSubview:view];\n        \n        //获取左侧tableview\n        for (UIView *obj in self.leftVC.view.subviews) {\n            if ([obj isKindOfClass:[UITableView class]]) {\n                self.leftTableview = (UITableView *)obj;\n            }\n        }\n        self.leftTableview.backgroundColor = [UIColor clearColor];\n        self.leftTableview.frame = CGRectMake(0, 0, kScreenWidth - kMainPageDistance, kScreenHeight);\n        //设置左侧tableview的初始位置和缩放系数\n        self.leftTableview.transform = CGAffineTransformMakeScale(kLeftScale, kLeftScale);\n        self.leftTableview.center = CGPointMake(kLeftCenterX, kScreenHeight * 0.5);\n        \n        [self.view addSubview:self.mainVC.view];\n        self.closed = YES;//初始时侧滑窗关闭\n        \n    }\n    return self;\n}\n\n- (void) viewWillAppear:(BOOL)animated\n{\n    [super viewWillAppear:animated];\n    self.leftVC.view.hidden = NO;\n}\n\n#pragma mark - 滑动手势\n\n//滑动手势\n- (void) handlePan: (UIPanGestureRecognizer *)rec{\n    \n    CGPoint point = [rec translationInView:self.view];\n    _scalef = (point.x * self.speedf + _scalef);\n\n    BOOL needMoveWithTap = YES;  //是否还需要跟随手指移动\n    if (((self.mainVC.view.x <= 0) && (_scalef <= 0)) || ((self.mainVC.view.x >= (kScreenWidth - kMainPageDistance )) && (_scalef >= 0)))\n    {\n        //边界值管控\n        _scalef = 0;\n        needMoveWithTap = NO;\n    }\n    \n    //根据视图位置判断是左滑还是右边滑动\n    if (needMoveWithTap && (rec.view.frame.origin.x >= 0) && (rec.view.frame.origin.x <= (kScreenWidth - kMainPageDistance)))\n    {\n        CGFloat recCenterX = rec.view.center.x + point.x * self.speedf;\n        if (recCenterX < kScreenWidth * 0.5 - 2) {\n            recCenterX = kScreenWidth * 0.5;\n        }\n        \n        CGFloat recCenterY = rec.view.center.y;\n        \n        rec.view.center = CGPointMake(recCenterX,recCenterY);\n\n        //scale 1.0~kMainPageScale\n        CGFloat scale = 1 - (1 - kMainPageScale) * (rec.view.frame.origin.x / (kScreenWidth - kMainPageDistance));\n    \n        rec.view.transform = CGAffineTransformScale(CGAffineTransformIdentity,scale, scale);\n        [rec setTranslation:CGPointMake(0, 0) inView:self.view];\n        \n        CGFloat leftTabCenterX = kLeftCenterX + ((kScreenWidth - kMainPageDistance) * 0.5 - kLeftCenterX) * (rec.view.frame.origin.x / (kScreenWidth - kMainPageDistance));\n\n        NSLog(@\"%f\",leftTabCenterX);\n        \n        \n        //leftScale kLeftScale~1.0\n        CGFloat leftScale = kLeftScale + (1 - kLeftScale) * (rec.view.frame.origin.x / (kScreenWidth - kMainPageDistance));\n        \n        self.leftTableview.center = CGPointMake(leftTabCenterX, kScreenHeight * 0.5);\n        self.leftTableview.transform = CGAffineTransformScale(CGAffineTransformIdentity, leftScale,leftScale);\n        \n        //tempAlpha kLeftAlpha~0\n        CGFloat tempAlpha = kLeftAlpha - kLeftAlpha * (rec.view.frame.origin.x / (kScreenWidth - kMainPageDistance));\n        self.contentView.alpha = tempAlpha;\n\n    }\n    else\n    {\n        //超出范围，\n        if (self.mainVC.view.x < 0)\n        {\n            [self closeLeftView];\n            _scalef = 0;\n        }\n        else if (self.mainVC.view.x > (kScreenWidth - kMainPageDistance))\n        {\n            [self openLeftView];\n            _scalef = 0;\n        }\n    }\n    \n    //手势结束后修正位置,超过约一半时向多出的一半偏移\n    if (rec.state == UIGestureRecognizerStateEnded) {\n        if (fabs(_scalef) > vCouldChangeDeckStateDistance)\n        {\n            if (self.closed)\n            {\n                [self openLeftView];\n            }\n            else\n            {\n                [self closeLeftView];\n            }\n        }\n        else\n        {\n            if (self.closed)\n            {\n                [self closeLeftView];\n            }\n            else\n            {\n                [self openLeftView];\n            }\n        }\n        _scalef = 0;\n    }\n}\n\n\n#pragma mark - 单击手势\n-(void)handeTap:(UITapGestureRecognizer *)tap{\n    \n    if ((!self.closed) && (tap.state == UIGestureRecognizerStateEnded))\n    {\n        [UIView beginAnimations:nil context:nil];\n        tap.view.transform = CGAffineTransformScale(CGAffineTransformIdentity,1.0,1.0);\n        tap.view.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2);\n        self.closed = YES;\n        \n        self.leftTableview.center = CGPointMake(kLeftCenterX, kScreenHeight * 0.5);\n        self.leftTableview.transform = CGAffineTransformScale(CGAffineTransformIdentity,kLeftScale,kLeftScale);\n        self.contentView.alpha = kLeftAlpha;\n        \n        [UIView commitAnimations];\n        _scalef = 0;\n        [self removeSingleTap];\n    }\n    \n}\n\n#pragma mark - 修改视图位置\n/**\n @brief 关闭左视图\n */\n- (void)closeLeftView\n{\n    [UIView beginAnimations:nil context:nil];\n    self.mainVC.view.transform = CGAffineTransformScale(CGAffineTransformIdentity,1.0,1.0);\n    self.mainVC.view.center = CGPointMake(kScreenWidth / 2, kScreenHeight / 2);\n    self.closed = YES;\n    \n    self.leftTableview.center = CGPointMake(kLeftCenterX, kScreenHeight * 0.5);\n    self.leftTableview.transform = CGAffineTransformScale(CGAffineTransformIdentity,kLeftScale,kLeftScale);\n    self.contentView.alpha = kLeftAlpha;\n    \n    [UIView commitAnimations];\n    [self removeSingleTap];\n}\n\n/**\n @brief 打开左视图\n */\n- (void)openLeftView;\n{\n    [UIView beginAnimations:nil context:nil];\n    self.mainVC.view.transform = CGAffineTransformScale(CGAffineTransformIdentity,kMainPageScale,kMainPageScale);\n    self.mainVC.view.center = kMainPageCenter;\n    self.closed = NO;\n    \n    self.leftTableview.center = CGPointMake((kScreenWidth - kMainPageDistance) * 0.5, kScreenHeight * 0.5);\n    self.leftTableview.transform = CGAffineTransformScale(CGAffineTransformIdentity,1.0,1.0);\n    self.contentView.alpha = 0;\n    \n    [UIView commitAnimations];\n    [self disableTapButton];\n}\n\n#pragma mark - 行为收敛控制\n- (void)disableTapButton\n{\n    for (UIButton *tempButton in [_mainVC.view subviews])\n    {\n        [tempButton setUserInteractionEnabled:NO];\n    }\n    //单击\n    if (!self.sideslipTapGes)\n    {\n        //单击手势\n        self.sideslipTapGes= [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handeTap:)];\n        [self.sideslipTapGes setNumberOfTapsRequired:1];\n        \n        [self.mainVC.view addGestureRecognizer:self.sideslipTapGes];\n        self.sideslipTapGes.cancelsTouchesInView = YES;  //点击事件盖住其它响应事件,但盖不住Button;\n    }\n}\n\n//关闭行为收敛\n- (void) removeSingleTap\n{\n    for (UIButton *tempButton in [self.mainVC.view  subviews])\n    {\n        [tempButton setUserInteractionEnabled:YES];\n    }\n    [self.mainVC.view removeGestureRecognizer:self.sideslipTapGes];\n    self.sideslipTapGes = nil;\n}\n\n/**\n *  设置滑动开关是否开启\n *\n *  @param enabled YES:支持滑动手势，NO:不支持滑动手势\n */\n\n- (void)setPanEnabled: (BOOL) enabled\n{\n    [self.pan setEnabled:enabled];\n}\n\n-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {\n    \n    if(touch.view.tag == vDeckCanNotPanViewTag)\n    {\n//        NSLog(@\"不响应侧滑\");\n        return NO;\n    }\n    else\n    {\n//        NSLog(@\"响应侧滑\");\n        return YES;\n    }\n}\n\n@end\n"
  },
  {
    "path": "LeftSlide/LeftSlideViewController/UIView_extra.h",
    "content": "//\n//  UIView_extra.h\n//  Woyoli\n//\n//  Created by jamie on 14-11-25.\n//  Copyright (c) 2014年 Missionsky. All rights reserved.\n//\n\n#define vAlertTag    10086\n\n#import <UIKit/UIKit.h>\n\n@interface UIView (UIView)\n\n@property (nonatomic, assign) CGFloat   x;\n@property (nonatomic, assign) CGFloat   y;\n@property (nonatomic, assign) CGFloat   width;\n@property (nonatomic, assign) CGFloat   height;\n@property (nonatomic, assign) CGPoint   origin;\n@property (nonatomic, assign) CGSize    size;\n@property (nonatomic, assign) CGFloat   bottom;\n@property (nonatomic, assign) CGFloat   right;\n@property (nonatomic, assign) CGFloat   centerX;\n@property (nonatomic, assign) CGFloat   centerY;\n@property (nonatomic, strong, readonly) UIView *lastSubviewOnX;\n@property (nonatomic, strong, readonly) UIView *lastSubviewOnY;\n\n/**\n * @brief 移除此view上的所有子视图\n */\n- (void)removeAllSubviews;\n\n/**\n @brief 弹窗\n @param title 弹窗标题\n        message 弹窗信息\n */\n+ (void) showAlertView: (NSString*) title andMessage: (NSString *) message;\n\n/**\n *  弹窗\n *\n *  @param title    弹窗标题\n *  @param message  弹窗信息\n *  @param delegate 弹窗代理\n */\n+ (void) showAlertView: (NSString*) title\n            andMessage: (NSString *) message\n          withDelegate: (UIViewController<UIAlertViewDelegate> *) delegate;\n\n@end\n"
  },
  {
    "path": "LeftSlide/LeftSlideViewController/UIView_extra.m",
    "content": "//\n//  UIView_extra.m\n//  Woyoli\n//\n//  Created by jamie on 14-11-25.\n//  Copyright (c) 2014年 Missionsky. All rights reserved.\n//\n\n#import \"UIView_extra.h\"\n\n@implementation UIView (UIView)\n\n@dynamic x;\n@dynamic y;\n@dynamic width;\n@dynamic height;\n@dynamic origin;\n@dynamic size;\n\n#pragma mark ---------------- Setters-----------------\n-(void)setX:(CGFloat)x{\n    CGRect r        = self.frame;\n    r.origin.x      = x;\n    self.frame      = r;\n}\n\n-(void)setY:(CGFloat)y{\n    CGRect r        = self.frame;\n    r.origin.y      = y;\n    self.frame      = r;\n}\n\n-(void)setWidth:(CGFloat)width{\n    CGRect r        = self.frame;\n    r.size.width    = width;\n    self.frame      = r;\n}\n\n-(void)setHeight:(CGFloat)height{\n    CGRect r        = self.frame;\n    r.size.height   = height;\n    self.frame      = r;\n}\n\n-(void)setOrigin:(CGPoint)origin{\n    self.x          = origin.x;\n    self.y          = origin.y;\n}\n\n-(void)setSize:(CGSize)size{\n    self.width      = size.width;\n    self.height     = size.height;\n}\n\n-(void)setRight:(CGFloat)right {\n    CGRect frame = self.frame;\n    frame.origin.x = right - frame.size.width;\n    self.frame = frame;\n}\n\n-(void)setBottom:(CGFloat)bottom {\n    CGRect frame = self.frame;\n    frame.origin.y = bottom - frame.size.height;\n    self.frame = frame;\n}\n\n-(void)setCenterX:(CGFloat)centerX {\n    self.center = CGPointMake(centerX, self.center.y);\n}\n\n-(void)setCenterY:(CGFloat)centerY {\n    self.center = CGPointMake(self.center.x, centerY);\n}\n\n#pragma mark ---------------- Getters-----------------\n-(CGFloat)x{\n    return self.frame.origin.x;\n}\n\n-(CGFloat)y{\n    return self.frame.origin.y;\n}\n\n-(CGFloat)width{\n    return self.frame.size.width;\n}\n\n-(CGFloat)height{\n    return self.frame.size.height;\n}\n\n-(CGPoint)origin{\n    return CGPointMake(self.x, self.y);\n}\n\n-(CGSize)size{\n    return CGSizeMake(self.width, self.height);\n}\n\n-(CGFloat)right {\n    return self.frame.origin.x + self.frame.size.width;\n}\n\n-(CGFloat)bottom {\n    return self.frame.origin.y + self.frame.size.height;\n}\n\n-(CGFloat)centerX {\n    return self.center.x;\n}\n\n-(CGFloat)centerY {\n    return self.center.y;\n}\n\n-(UIView *)lastSubviewOnX{\n    if(self.subviews.count > 0){\n        UIView *outView = self.subviews[0];\n        \n        for(UIView *v in self.subviews)\n            if(v.x > outView.x)\n                outView = v;\n        \n        return outView;\n    }\n    \n    return nil;\n}\n\n-(UIView *)lastSubviewOnY{\n    if(self.subviews.count > 0){\n        UIView *outView = self.subviews[0];\n        \n        for(UIView *v in self.subviews)\n            if(v.y > outView.y)\n                outView = v;\n        \n        return outView;\n    }\n    \n    return nil;\n}\n\n#pragma mark ---------------- other-----------------\n/**\n * @brief 移除此view上的所有子视图\n */\n- (void)removeAllSubviews {\n    for (UIView *view in self.subviews) {\n        [view removeFromSuperview];\n    }\n    return;\n}\n\n/**\n @brief 弹窗\n @param title 弹窗标题\n message 弹窗信息\n */\n+ (void) showAlertView: (NSString*) title andMessage: (NSString *) message\n{\n    dispatch_async(dispatch_get_main_queue() , ^{\n        UIAlertView *alert = [[UIAlertView alloc] init];\n        alert.title = title;\n        alert.message = message;\n        [alert addButtonWithTitle:@\"确定\"];\n        [alert show];\n        alert = nil;\n    });\n}\n\n/**\n *  弹窗\n *\n *  @param title    弹窗标题\n *  @param message  弹窗信息\n *  @param delegate 弹窗代理\n */\n+ (void) showAlertView: (NSString*) title\n            andMessage: (NSString *) message\n          withDelegate: (UIViewController<UIAlertViewDelegate> *) delegate\n{\n    dispatch_async(dispatch_get_main_queue() , ^{\n        UIAlertView *alert = [[UIAlertView alloc] init];\n        alert.title = title;\n        alert.message = message;\n        alert.delegate = delegate;\n        alert.tag = vAlertTag;\n        [alert addButtonWithTitle:@\"确定\"];\n        [alert show];\n        alert = nil;\n    });\n}\n\n\n@end\n"
  },
  {
    "path": "LeftSlide/LeftSortsViewController.h",
    "content": "//\n//  LeftSortsViewController.h\n//  LGDeckViewController\n//\n//  Created by jamie on 15/3/31.\n//  Copyright (c) 2015年 Jamie-Ling. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface LeftSortsViewController : UIViewController\n@property (nonatomic,strong) UITableView *tableview;\n@end\n"
  },
  {
    "path": "LeftSlide/LeftSortsViewController.m",
    "content": "//\n//  LeftSortsViewController.m\n//  LGDeckViewController\n//\n//  Created by jamie on 15/3/31.\n//  Copyright (c) 2015年 Jamie-Ling. All rights reserved.\n//\n\n#import \"LeftSortsViewController.h\"\n#import \"AppDelegate.h\"\n#import \"otherViewController.h\"\n\n@interface LeftSortsViewController () <UITableViewDelegate,UITableViewDataSource>\n\n@end\n\n@implementation LeftSortsViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    // Do any additional setup after loading the view.\n    \n    UIImageView *imageview = [[UIImageView alloc] initWithFrame:self.view.bounds];\n    imageview.image = [UIImage imageNamed:@\"leftbackiamge\"];\n    [self.view addSubview:imageview];\n\n    UITableView *tableview = [[UITableView alloc] init];\n    self.tableview = tableview;\n    tableview.frame = self.view.bounds;\n    tableview.dataSource = self;\n    tableview.delegate  = self;\n    tableview.separatorStyle = UITableViewCellSeparatorStyleNone;\n    [self.view addSubview:tableview];\n}\n\n- (void)didReceiveMemoryWarning {\n    [super didReceiveMemoryWarning];\n    // Dispose of any resources that can be recreated.\n}\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section\n{\n    return 7;\n}\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath\n{\n    static NSString *Identifier = @\"Identifier\";\n    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier];\n    if (cell == nil) {\n        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Identifier];\n    }\n    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;\n    cell.textLabel.font = [UIFont systemFontOfSize:20.0f];\n    cell.backgroundColor = [UIColor clearColor];\n    cell.textLabel.textColor = [UIColor whiteColor];\n    \n    if (indexPath.row == 0) {\n        cell.textLabel.text = @\"开通会员\";\n    } else if (indexPath.row == 1) {\n        cell.textLabel.text = @\"QQ钱包\";\n    } else if (indexPath.row == 2) {\n        cell.textLabel.text = @\"网上营业厅\";\n    } else if (indexPath.row == 3) {\n        cell.textLabel.text = @\"个性装扮\";\n    } else if (indexPath.row == 4) {\n        cell.textLabel.text = @\"我的收藏\";\n    } else if (indexPath.row == 5) {\n        cell.textLabel.text = @\"我的相册\";\n    } else if (indexPath.row == 6) {\n        cell.textLabel.text = @\"我的文件\";\n    }\n    return cell;\n}\n\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath\n{\n    [tableView deselectRowAtIndexPath:indexPath animated:YES];\n    AppDelegate *tempAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n    otherViewController *vc = [[otherViewController alloc] init];\n    [tempAppDelegate.LeftSlideVC closeLeftView];//关闭左侧抽屉\n    \n    [tempAppDelegate.mainNavigationController pushViewController:vc animated:NO];\n}\n\n- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section\n{\n    return 180;\n}\n- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section\n{\n    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableview.bounds.size.width, 180)];\n    view.backgroundColor = [UIColor clearColor];\n    return view;\n}\n@end\n"
  },
  {
    "path": "LeftSlide/MainPageViewController.h",
    "content": "//\n//  MainPageViewController.h\n//  LeftSlide\n//\n//  Created by huangzhenyu on 15/6/18.\n//  Copyright (c) 2015年 eamon. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface MainPageViewController : UIViewController\n\n@end\n"
  },
  {
    "path": "LeftSlide/MainPageViewController.m",
    "content": "//\n//  MainPageViewController.m\n//  LeftSlide\n//\n//  Created by huangzhenyu on 15/6/18.\n//  Copyright (c) 2015年 eamon. All rights reserved.\n//\n\n#import \"MainPageViewController.h\"\n#import \"AppDelegate.h\"\n#define vBackBarButtonItemName  @\"backArrow.png\"    //导航条返回默认图片名\n@interface MainPageViewController ()\n\n@end\n\n@implementation MainPageViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.title = @\"主界面\";\n    self.view.backgroundColor = [UIColor whiteColor];\n\n    UIButton *menuBtn = [UIButton buttonWithType:UIButtonTypeCustom];\n    menuBtn.frame = CGRectMake(0, 0, 20, 18);\n    [menuBtn setBackgroundImage:[UIImage imageNamed:@\"menu\"] forState:UIControlStateNormal];\n    [menuBtn addTarget:self action:@selector(openOrCloseLeftList) forControlEvents:UIControlEventTouchUpInside];\n    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:menuBtn];\n}\n\n- (void) openOrCloseLeftList\n{\n    AppDelegate *tempAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n    \n    if (tempAppDelegate.LeftSlideVC.closed)\n    {\n        [tempAppDelegate.LeftSlideVC openLeftView];\n    }\n    else\n    {\n        [tempAppDelegate.LeftSlideVC closeLeftView];\n    }\n}\n\n- (void)viewWillDisappear:(BOOL)animated\n{\n    [super viewWillDisappear:animated];\n    NSLog(@\"viewWillDisappear\");\n    AppDelegate *tempAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n    [tempAppDelegate.LeftSlideVC setPanEnabled:NO];\n}\n\n- (void)viewWillAppear:(BOOL)animated\n{\n    [super viewWillAppear:animated];\n    NSLog(@\"viewWillAppear\");\n    AppDelegate *tempAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n    [tempAppDelegate.LeftSlideVC setPanEnabled:YES];\n}\n\n@end\n"
  },
  {
    "path": "LeftSlide/main.m",
    "content": "//\n//  main.m\n//  LeftSlide\n//\n//  Created by huangzhenyu on 15/6/18.\n//  Copyright (c) 2015年 eamon. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"AppDelegate.h\"\n\nint main(int argc, char * argv[]) {\n    @autoreleasepool {\n        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));\n    }\n}\n"
  },
  {
    "path": "LeftSlide/otherViewController.h",
    "content": "//\n//  otherViewController.h\n//  LGDeckViewController\n//\n//  Created by huangzhenyu on 15/6/1.\n//  Copyright (c) 2015年 Jamie-Ling. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface otherViewController : UIViewController\n\n@end\n"
  },
  {
    "path": "LeftSlide/otherViewController.m",
    "content": "//\n//  otherViewController.m\n//  LGDeckViewController\n//\n//  Created by huangzhenyu on 15/6/1.\n//  Copyright (c) 2015年 Jamie-Ling. All rights reserved.\n//\n\n#import \"otherViewController.h\"\n\n@interface otherViewController ()\n\n@end\n\n@implementation otherViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.view.backgroundColor = [UIColor brownColor];\n}\n\n- (void)didReceiveMemoryWarning {\n    [super didReceiveMemoryWarning];\n    // Dispose of any resources that can be recreated.\n}\n\n/*\n#pragma mark - Navigation\n\n// In a storyboard-based application, you will often want to do a little preparation before navigation\n- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {\n    // Get the new view controller using [segue destinationViewController].\n    // Pass the selected object to the new view controller.\n}\n*/\n\n@end\n"
  },
  {
    "path": "LeftSlide.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tEEA1808E1B328F1500A3186D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA1808D1B328F1500A3186D /* main.m */; };\n\t\tEEA180911B328F1500A3186D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA180901B328F1500A3186D /* AppDelegate.m */; };\n\t\tEEA180991B328F1600A3186D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EEA180981B328F1500A3186D /* Images.xcassets */; };\n\t\tEEA1809C1B328F1600A3186D /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = EEA1809A1B328F1600A3186D /* LaunchScreen.xib */; };\n\t\tEEA180A81B328F1600A3186D /* LeftSlideTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA180A71B328F1600A3186D /* LeftSlideTests.m */; };\n\t\tEEA180B61B32907700A3186D /* LeftSlideViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA180B31B32907700A3186D /* LeftSlideViewController.m */; };\n\t\tEEA180B71B32907700A3186D /* UIView_extra.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA180B51B32907700A3186D /* UIView_extra.m */; };\n\t\tEEA180BA1B3292A900A3186D /* MainPageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA180B91B3292A900A3186D /* MainPageViewController.m */; };\n\t\tEEA180BD1B3292CB00A3186D /* LeftSortsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA180BC1B3292CB00A3186D /* LeftSortsViewController.m */; };\n\t\tEEA180C01B32930100A3186D /* otherViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA180BF1B32930100A3186D /* otherViewController.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tEEA180A21B328F1600A3186D /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = EEA180801B328F1500A3186D /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = EEA180871B328F1500A3186D;\n\t\t\tremoteInfo = LeftSlide;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\tEEA180881B328F1500A3186D /* LeftSlide.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LeftSlide.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tEEA1808C1B328F1500A3186D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tEEA1808D1B328F1500A3186D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\tEEA1808F1B328F1500A3186D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = \"<group>\"; };\n\t\tEEA180901B328F1500A3186D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = \"<group>\"; };\n\t\tEEA180981B328F1500A3186D /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = \"<group>\"; };\n\t\tEEA1809B1B328F1600A3186D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = \"<group>\"; };\n\t\tEEA180A11B328F1600A3186D /* LeftSlideTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LeftSlideTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tEEA180A61B328F1600A3186D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tEEA180A71B328F1600A3186D /* LeftSlideTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LeftSlideTests.m; sourceTree = \"<group>\"; };\n\t\tEEA180B21B32907700A3186D /* LeftSlideViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LeftSlideViewController.h; sourceTree = \"<group>\"; };\n\t\tEEA180B31B32907700A3186D /* LeftSlideViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LeftSlideViewController.m; sourceTree = \"<group>\"; };\n\t\tEEA180B41B32907700A3186D /* UIView_extra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIView_extra.h; sourceTree = \"<group>\"; };\n\t\tEEA180B51B32907700A3186D /* UIView_extra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIView_extra.m; sourceTree = \"<group>\"; };\n\t\tEEA180B81B3292A900A3186D /* MainPageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainPageViewController.h; sourceTree = \"<group>\"; };\n\t\tEEA180B91B3292A900A3186D /* MainPageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainPageViewController.m; sourceTree = \"<group>\"; };\n\t\tEEA180BB1B3292CB00A3186D /* LeftSortsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LeftSortsViewController.h; sourceTree = \"<group>\"; };\n\t\tEEA180BC1B3292CB00A3186D /* LeftSortsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LeftSortsViewController.m; sourceTree = \"<group>\"; };\n\t\tEEA180BE1B32930100A3186D /* otherViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = otherViewController.h; sourceTree = \"<group>\"; };\n\t\tEEA180BF1B32930100A3186D /* otherViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = otherViewController.m; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tEEA180851B328F1500A3186D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tEEA1809E1B328F1600A3186D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tEEA1807F1B328F1500A3186D = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEEA1808A1B328F1500A3186D /* LeftSlide */,\n\t\t\t\tEEA180A41B328F1600A3186D /* LeftSlideTests */,\n\t\t\t\tEEA180891B328F1500A3186D /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEEA180891B328F1500A3186D /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEEA180881B328F1500A3186D /* LeftSlide.app */,\n\t\t\t\tEEA180A11B328F1600A3186D /* LeftSlideTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEEA1808A1B328F1500A3186D /* LeftSlide */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEEA180B11B32907700A3186D /* LeftSlideViewController */,\n\t\t\t\tEEA1808F1B328F1500A3186D /* AppDelegate.h */,\n\t\t\t\tEEA180901B328F1500A3186D /* AppDelegate.m */,\n\t\t\t\tEEA180BE1B32930100A3186D /* otherViewController.h */,\n\t\t\t\tEEA180BF1B32930100A3186D /* otherViewController.m */,\n\t\t\t\tEEA180BB1B3292CB00A3186D /* LeftSortsViewController.h */,\n\t\t\t\tEEA180BC1B3292CB00A3186D /* LeftSortsViewController.m */,\n\t\t\t\tEEA180B81B3292A900A3186D /* MainPageViewController.h */,\n\t\t\t\tEEA180B91B3292A900A3186D /* MainPageViewController.m */,\n\t\t\t\tEEA180981B328F1500A3186D /* Images.xcassets */,\n\t\t\t\tEEA1809A1B328F1600A3186D /* LaunchScreen.xib */,\n\t\t\t\tEEA1808B1B328F1500A3186D /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = LeftSlide;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEEA1808B1B328F1500A3186D /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEEA1808C1B328F1500A3186D /* Info.plist */,\n\t\t\t\tEEA1808D1B328F1500A3186D /* main.m */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEEA180A41B328F1600A3186D /* LeftSlideTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEEA180A71B328F1600A3186D /* LeftSlideTests.m */,\n\t\t\t\tEEA180A51B328F1600A3186D /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = LeftSlideTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEEA180A51B328F1600A3186D /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEEA180A61B328F1600A3186D /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEEA180B11B32907700A3186D /* LeftSlideViewController */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEEA180B21B32907700A3186D /* LeftSlideViewController.h */,\n\t\t\t\tEEA180B31B32907700A3186D /* LeftSlideViewController.m */,\n\t\t\t\tEEA180B41B32907700A3186D /* UIView_extra.h */,\n\t\t\t\tEEA180B51B32907700A3186D /* UIView_extra.m */,\n\t\t\t);\n\t\t\tpath = LeftSlideViewController;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tEEA180871B328F1500A3186D /* LeftSlide */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = EEA180AB1B328F1600A3186D /* Build configuration list for PBXNativeTarget \"LeftSlide\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tEEA180841B328F1500A3186D /* Sources */,\n\t\t\t\tEEA180851B328F1500A3186D /* Frameworks */,\n\t\t\t\tEEA180861B328F1500A3186D /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = LeftSlide;\n\t\t\tproductName = LeftSlide;\n\t\t\tproductReference = EEA180881B328F1500A3186D /* LeftSlide.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\tEEA180A01B328F1600A3186D /* LeftSlideTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = EEA180AE1B328F1600A3186D /* Build configuration list for PBXNativeTarget \"LeftSlideTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tEEA1809D1B328F1600A3186D /* Sources */,\n\t\t\t\tEEA1809E1B328F1600A3186D /* Frameworks */,\n\t\t\t\tEEA1809F1B328F1600A3186D /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tEEA180A31B328F1600A3186D /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = LeftSlideTests;\n\t\t\tproductName = LeftSlideTests;\n\t\t\tproductReference = EEA180A11B328F1600A3186D /* LeftSlideTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tEEA180801B328F1500A3186D /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0630;\n\t\t\t\tORGANIZATIONNAME = eamon;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tEEA180871B328F1500A3186D = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.3;\n\t\t\t\t\t};\n\t\t\t\t\tEEA180A01B328F1600A3186D = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.3;\n\t\t\t\t\t\tTestTargetID = EEA180871B328F1500A3186D;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = EEA180831B328F1500A3186D /* Build configuration list for PBXProject \"LeftSlide\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = EEA1807F1B328F1500A3186D;\n\t\t\tproductRefGroup = EEA180891B328F1500A3186D /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tEEA180871B328F1500A3186D /* LeftSlide */,\n\t\t\t\tEEA180A01B328F1600A3186D /* LeftSlideTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tEEA180861B328F1500A3186D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEEA1809C1B328F1600A3186D /* LaunchScreen.xib in Resources */,\n\t\t\t\tEEA180991B328F1600A3186D /* Images.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tEEA1809F1B328F1600A3186D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tEEA180841B328F1500A3186D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEEA180BA1B3292A900A3186D /* MainPageViewController.m in Sources */,\n\t\t\t\tEEA180BD1B3292CB00A3186D /* LeftSortsViewController.m in Sources */,\n\t\t\t\tEEA180911B328F1500A3186D /* AppDelegate.m in Sources */,\n\t\t\t\tEEA180B71B32907700A3186D /* UIView_extra.m in Sources */,\n\t\t\t\tEEA180C01B32930100A3186D /* otherViewController.m in Sources */,\n\t\t\t\tEEA1808E1B328F1500A3186D /* main.m in Sources */,\n\t\t\t\tEEA180B61B32907700A3186D /* LeftSlideViewController.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tEEA1809D1B328F1600A3186D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEEA180A81B328F1600A3186D /* LeftSlideTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tEEA180A31B328F1600A3186D /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = EEA180871B328F1500A3186D /* LeftSlide */;\n\t\t\ttargetProxy = EEA180A21B328F1600A3186D /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\tEEA1809A1B328F1600A3186D /* LaunchScreen.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tEEA1809B1B328F1600A3186D /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tEEA180A91B328F1600A3186D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.3;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tEEA180AA1B328F1600A3186D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.3;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tEEA180AC1B328F1600A3186D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tINFOPLIST_FILE = LeftSlide/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tEEA180AD1B328F1600A3186D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tINFOPLIST_FILE = LeftSlide/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tEEA180AF1B328F1600A3186D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = LeftSlideTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/LeftSlide.app/LeftSlide\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tEEA180B01B328F1600A3186D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = LeftSlideTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/LeftSlide.app/LeftSlide\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tEEA180831B328F1500A3186D /* Build configuration list for PBXProject \"LeftSlide\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tEEA180A91B328F1600A3186D /* Debug */,\n\t\t\t\tEEA180AA1B328F1600A3186D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tEEA180AB1B328F1600A3186D /* Build configuration list for PBXNativeTarget \"LeftSlide\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tEEA180AC1B328F1600A3186D /* Debug */,\n\t\t\t\tEEA180AD1B328F1600A3186D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t};\n\t\tEEA180AE1B328F1600A3186D /* Build configuration list for PBXNativeTarget \"LeftSlideTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tEEA180AF1B328F1600A3186D /* Debug */,\n\t\t\t\tEEA180B01B328F1600A3186D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = EEA180801B328F1500A3186D /* Project object */;\n}\n"
  },
  {
    "path": "LeftSlide.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:LeftSlide.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "LeftSlideTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.eamon.$(PRODUCT_NAME:rfc1034identifier)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "LeftSlideTests/LeftSlideTests.m",
    "content": "//\n//  LeftSlideTests.m\n//  LeftSlideTests\n//\n//  Created by huangzhenyu on 15/6/18.\n//  Copyright (c) 2015年 eamon. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import <XCTest/XCTest.h>\n\n@interface LeftSlideTests : XCTestCase\n\n@end\n\n@implementation LeftSlideTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)testExample {\n    // This is an example of a functional test case.\n    XCTAssert(YES, @\"Pass\");\n}\n\n- (void)testPerformanceExample {\n    // This is an example of a performance test case.\n    [self measureBlock:^{\n        // Put the code you want to measure the time of here.\n    }];\n}\n\n@end\n"
  },
  {
    "path": "LeftSlideViewController/LeftSlideViewController.h",
    "content": "//\n//  LeftSlideViewController.h\n//  LeftSlideViewController\n//\n//  Created by huangzhenyu on 15/06/18.\n//  Copyright (c) 2015年 huangzhenyu. All rights reserved.\n\n#define kScreenSize           [[UIScreen mainScreen] bounds].size\n#define kScreenWidth          [[UIScreen mainScreen] bounds].size.width\n#define kScreenHeight         [[UIScreen mainScreen] bounds].size.height\n\n#define kMainPageDistance   100   //打开左侧窗时，中视图(右视图)露出的宽度\n#define kMainPageScale   0.8  //打开左侧窗时，中视图(右视图）缩放比例\n#define kMainPageCenter  CGPointMake(kScreenWidth + kScreenWidth * kMainPageScale / 2.0 - kMainPageDistance, kScreenHeight / 2)  //打开左侧窗时，中视图中心点\n\n#define vCouldChangeDeckStateDistance  (kScreenWidth - kMainPageDistance) / 2.0 - 40 //滑动距离大于此数时，状态改变（关--》开，或者开--》关）\n#define vSpeedFloat   0.7    //滑动速度\n\n#define kLeftAlpha 0.9  //左侧蒙版的最大值\n#define kLeftCenterX 30 //左侧初始偏移量\n#define kLeftScale 0.7 //左侧初始缩放比例\n\n#define vDeckCanNotPanViewTag    987654   // 不响应此侧滑的View的tag\n\n#import <UIKit/UIKit.h>\n#import \"UIView_extra.h\"\n\n@interface DeckViewController : UIViewController\n\n//滑动速度系数-建议在0.5-1之间。默认为0.5\n@property (nonatomic, assign) CGFloat speedf;\n\n//左侧窗控制器\n@property (nonatomic, strong) UIViewController *leftVC;\n\n//点击手势控制器，是否允许点击视图恢复视图位置。默认为yes\n@property (nonatomic, strong) UITapGestureRecognizer *sideslipTapGes;\n\n//滑动手势控制器\n@property (nonatomic, strong) UIPanGestureRecognizer *pan;\n\n//侧滑窗是否关闭(关闭时显示为主页)\n@property (nonatomic, assign) BOOL closed;\n\n\n/**\n @brief 初始化侧滑控制器\n @param leftVC 右视图控制器\n mainVC 中间视图控制器\n @result instancetype 初始化生成的对象\n */\n- (instancetype)initWithLeftView:(UIViewController *)leftVC\n                     andMainView:(UIViewController *)mainVC;\n\n/**\n @brief 关闭左视图\n */\n- (void)closeLeftView;\n\n\n/**\n @brief 打开左视图\n */\n- (void)openLeftView;\n\n/**\n *  设置滑动开关是否开启\n *\n *  @param enabled YES:支持滑动手势，NO:不支持滑动手势\n */\n- (void)setPanEnabled: (BOOL) enabled;\n\n@end\n"
  },
  {
    "path": "LeftSlideViewController/LeftSlideViewController.m",
    "content": "//\n//  LeftSlideViewController.m\n//  LeftSlideViewController\n//\n//  Created by huangzhenyu on 15/06/18.\n//  Copyright (c) 2015年 huangzhenyu. All rights reserved.\n\n#import \"LeftSlideViewController.h\"\n\n\n@interface DeckViewController ()<UIGestureRecognizerDelegate>\n{\n    CGFloat _scalef;  //实时横向位移\n}\n@property (nonatomic,strong) UIViewController *mainVC;\n@property (nonatomic,strong) UITableView *leftTableview;\n@property (nonatomic,assign) CGFloat leftTableviewW;\n@property (nonatomic,strong) UIView *contentView;\n@end\n\n\n@implementation DeckViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    // Do any additional setup after loading the view.\n}\n\n/**\n @brief 初始化侧滑控制器\n @param leftVC 左视图控制器\n mainVC 中间视图控制器\n @result instancetype 初始化生成的对象\n */\n- (instancetype)initWithLeftView:(UIViewController *)leftVC\n                     andMainView:(UIViewController *)mainVC\n{\n    if(self = [super init]){\n        self.speedf = vSpeedFloat;\n        \n        self.leftVC = leftVC;\n        self.mainVC = mainVC;\n        \n        //滑动手势\n        self.pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];\n        [self.mainVC.view addGestureRecognizer:self.pan];\n        \n        [self.pan setCancelsTouchesInView:YES];\n        self.pan.delegate = self;\n        \n        self.leftVC.view.hidden = YES;\n        \n        [self.view addSubview:self.leftVC.view];\n        \n        //蒙版\n        UIView *view = [[UIView alloc] init];\n        view.frame = self.leftVC.view.bounds;\n        view.backgroundColor = [UIColor blackColor];\n        view.alpha = 0.5;\n        self.contentView = view;\n        [self.leftVC.view addSubview:view];\n        \n        //获取左侧tableview\n        for (UIView *obj in self.leftVC.view.subviews) {\n            if ([obj isKindOfClass:[UITableView class]]) {\n                self.leftTableview = (UITableView *)obj;\n            }\n        }\n        self.leftTableview.backgroundColor = [UIColor clearColor];\n        self.leftTableview.frame = CGRectMake(0, 0, kScreenWidth - kMainPageDistance, kScreenHeight);\n        //设置左侧tableview的初始位置和缩放系数\n        self.leftTableview.transform = CGAffineTransformMakeScale(kLeftScale, kLeftScale);\n        self.leftTableview.center = CGPointMake(kLeftCenterX, kScreenHeight * 0.5);\n        \n        [self.view addSubview:self.mainVC.view];\n        self.closed = YES;//初始时侧滑窗关闭\n        \n    }\n    return self;\n}\n\n- (void) viewWillAppear:(BOOL)animated\n{\n    [super viewWillAppear:animated];\n    self.leftVC.view.hidden = NO;\n}\n\n#pragma mark - 滑动手势\n\n//滑动手势\n- (void) handlePan: (UIPanGestureRecognizer *)rec{\n    \n    CGPoint point = [rec translationInView:self.view];\n    _scalef = (point.x * self.speedf + _scalef);\n\n    BOOL needMoveWithTap = YES;  //是否还需要跟随手指移动\n    if (((self.mainVC.view.x <= 0) && (_scalef <= 0)) || ((self.mainVC.view.x >= (kScreenWidth - kMainPageDistance )) && (_scalef >= 0)))\n    {\n        //边界值管控\n        _scalef = 0;\n        needMoveWithTap = NO;\n    }\n    \n    //根据视图位置判断是左滑还是右边滑动\n    if (needMoveWithTap && (rec.view.frame.origin.x >= 0) && (rec.view.frame.origin.x <= (kScreenWidth - kMainPageDistance)))\n    {\n        CGFloat recCenterX = rec.view.center.x + point.x * self.speedf;\n        if (recCenterX < kScreenWidth * 0.5 - 2) {\n            recCenterX = kScreenWidth * 0.5;\n        }\n        \n        CGFloat recCenterY = rec.view.center.y;\n        \n        rec.view.center = CGPointMake(recCenterX,recCenterY);\n\n        //scale 1.0~kMainPageScale\n        CGFloat scale = 1 - (1 - kMainPageScale) * (rec.view.frame.origin.x / (kScreenWidth - kMainPageDistance));\n    \n        rec.view.transform = CGAffineTransformScale(CGAffineTransformIdentity,scale, scale);\n        [rec setTranslation:CGPointMake(0, 0) inView:self.view];\n        \n        CGFloat leftTabCenterX = kLeftCenterX + ((kScreenWidth - kMainPageDistance) * 0.5 - kLeftCenterX) * (rec.view.frame.origin.x / (kScreenWidth - kMainPageDistance));\n\n        NSLog(@\"%f\",leftTabCenterX);\n        \n        \n        //leftScale kLeftScale~1.0\n        CGFloat leftScale = kLeftScale + (1 - kLeftScale) * (rec.view.frame.origin.x / (kScreenWidth - kMainPageDistance));\n        \n        self.leftTableview.center = CGPointMake(leftTabCenterX, kScreenHeight * 0.5);\n        self.leftTableview.transform = CGAffineTransformScale(CGAffineTransformIdentity, leftScale,leftScale);\n        \n        //tempAlpha kLeftAlpha~0\n        CGFloat tempAlpha = kLeftAlpha - kLeftAlpha * (rec.view.frame.origin.x / (kScreenWidth - kMainPageDistance));\n        self.contentView.alpha = tempAlpha;\n\n    }\n    else\n    {\n        //超出范围，\n        if (self.mainVC.view.x < 0)\n        {\n            [self closeLeftView];\n            _scalef = 0;\n        }\n        else if (self.mainVC.view.x > (kScreenWidth - kMainPageDistance))\n        {\n            [self openLeftView];\n            _scalef = 0;\n        }\n    }\n    \n    //手势结束后修正位置,超过约一半时向多出的一半偏移\n    if (rec.state == UIGestureRecognizerStateEnded) {\n        if (fabs(_scalef) > vCouldChangeDeckStateDistance)\n        {\n            if (self.closed)\n            {\n                [self openLeftView];\n            }\n            else\n            {\n                [self closeLeftView];\n            }\n        }\n        else\n        {\n            if (self.closed)\n            {\n                [self closeLeftView];\n            }\n            else\n            {\n                [self openLeftView];\n            }\n        }\n        _scalef = 0;\n    }\n}\n\n\n#pragma mark - 单击手势\n-(void)handeTap:(UITapGestureRecognizer *)tap{\n    \n    if ((!self.closed) && (tap.state == UIGestureRecognizerStateEnded))\n    {\n        [UIView beginAnimations:nil context:nil];\n        tap.view.transform = CGAffineTransformScale(CGAffineTransformIdentity,1.0,1.0);\n        tap.view.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2);\n        self.closed = YES;\n        \n        self.leftTableview.center = CGPointMake(kLeftCenterX, kScreenHeight * 0.5);\n        self.leftTableview.transform = CGAffineTransformScale(CGAffineTransformIdentity,kLeftScale,kLeftScale);\n        self.contentView.alpha = kLeftAlpha;\n        \n        [UIView commitAnimations];\n        _scalef = 0;\n        [self removeSingleTap];\n    }\n    \n}\n\n#pragma mark - 修改视图位置\n/**\n @brief 关闭左视图\n */\n- (void)closeLeftView\n{\n    [UIView beginAnimations:nil context:nil];\n    self.mainVC.view.transform = CGAffineTransformScale(CGAffineTransformIdentity,1.0,1.0);\n    self.mainVC.view.center = CGPointMake(kScreenWidth / 2, kScreenHeight / 2);\n    self.closed = YES;\n    \n    self.leftTableview.center = CGPointMake(kLeftCenterX, kScreenHeight * 0.5);\n    self.leftTableview.transform = CGAffineTransformScale(CGAffineTransformIdentity,kLeftScale,kLeftScale);\n    self.contentView.alpha = kLeftAlpha;\n    \n    [UIView commitAnimations];\n    [self removeSingleTap];\n}\n\n/**\n @brief 打开左视图\n */\n- (void)openLeftView;\n{\n    [UIView beginAnimations:nil context:nil];\n    self.mainVC.view.transform = CGAffineTransformScale(CGAffineTransformIdentity,kMainPageScale,kMainPageScale);\n    self.mainVC.view.center = kMainPageCenter;\n    self.closed = NO;\n    \n    self.leftTableview.center = CGPointMake((kScreenWidth - kMainPageDistance) * 0.5, kScreenHeight * 0.5);\n    self.leftTableview.transform = CGAffineTransformScale(CGAffineTransformIdentity,1.0,1.0);\n    self.contentView.alpha = 0;\n    \n    [UIView commitAnimations];\n    [self disableTapButton];\n}\n\n#pragma mark - 行为收敛控制\n- (void)disableTapButton\n{\n    for (UIButton *tempButton in [_mainVC.view subviews])\n    {\n        [tempButton setUserInteractionEnabled:NO];\n    }\n    //单击\n    if (!self.sideslipTapGes)\n    {\n        //单击手势\n        self.sideslipTapGes= [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handeTap:)];\n        [self.sideslipTapGes setNumberOfTapsRequired:1];\n        \n        [self.mainVC.view addGestureRecognizer:self.sideslipTapGes];\n        self.sideslipTapGes.cancelsTouchesInView = YES;  //点击事件盖住其它响应事件,但盖不住Button;\n    }\n}\n\n//关闭行为收敛\n- (void) removeSingleTap\n{\n    for (UIButton *tempButton in [self.mainVC.view  subviews])\n    {\n        [tempButton setUserInteractionEnabled:YES];\n    }\n    [self.mainVC.view removeGestureRecognizer:self.sideslipTapGes];\n    self.sideslipTapGes = nil;\n}\n\n/**\n *  设置滑动开关是否开启\n *\n *  @param enabled YES:支持滑动手势，NO:不支持滑动手势\n */\n\n- (void)setPanEnabled: (BOOL) enabled\n{\n    [self.pan setEnabled:enabled];\n}\n\n-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {\n    \n    if(touch.view.tag == vDeckCanNotPanViewTag)\n    {\n//        NSLog(@\"不响应侧滑\");\n        return NO;\n    }\n    else\n    {\n//        NSLog(@\"响应侧滑\");\n        return YES;\n    }\n}\n\n@end\n"
  },
  {
    "path": "LeftSlideViewController/UIView_extra.h",
    "content": "//\n//  UIView_extra.h\n//  Woyoli\n//\n//  Created by jamie on 14-11-25.\n//  Copyright (c) 2014年 Missionsky. All rights reserved.\n//\n\n#define vAlertTag    10086\n\n#import <UIKit/UIKit.h>\n\n@interface UIView (UIView)\n\n@property (nonatomic, assign) CGFloat   x;\n@property (nonatomic, assign) CGFloat   y;\n@property (nonatomic, assign) CGFloat   width;\n@property (nonatomic, assign) CGFloat   height;\n@property (nonatomic, assign) CGPoint   origin;\n@property (nonatomic, assign) CGSize    size;\n@property (nonatomic, assign) CGFloat   bottom;\n@property (nonatomic, assign) CGFloat   right;\n@property (nonatomic, assign) CGFloat   centerX;\n@property (nonatomic, assign) CGFloat   centerY;\n@property (nonatomic, strong, readonly) UIView *lastSubviewOnX;\n@property (nonatomic, strong, readonly) UIView *lastSubviewOnY;\n\n/**\n * @brief 移除此view上的所有子视图\n */\n- (void)removeAllSubviews;\n\n/**\n @brief 弹窗\n @param title 弹窗标题\n        message 弹窗信息\n */\n+ (void) showAlertView: (NSString*) title andMessage: (NSString *) message;\n\n/**\n *  弹窗\n *\n *  @param title    弹窗标题\n *  @param message  弹窗信息\n *  @param delegate 弹窗代理\n */\n+ (void) showAlertView: (NSString*) title\n            andMessage: (NSString *) message\n          withDelegate: (UIViewController<UIAlertViewDelegate> *) delegate;\n\n@end\n"
  },
  {
    "path": "LeftSlideViewController/UIView_extra.m",
    "content": "//\n//  UIView_extra.m\n//  Woyoli\n//\n//  Created by jamie on 14-11-25.\n//  Copyright (c) 2014年 Missionsky. All rights reserved.\n//\n\n#import \"UIView_extra.h\"\n\n@implementation UIView (UIView)\n\n@dynamic x;\n@dynamic y;\n@dynamic width;\n@dynamic height;\n@dynamic origin;\n@dynamic size;\n\n#pragma mark ---------------- Setters-----------------\n-(void)setX:(CGFloat)x{\n    CGRect r        = self.frame;\n    r.origin.x      = x;\n    self.frame      = r;\n}\n\n-(void)setY:(CGFloat)y{\n    CGRect r        = self.frame;\n    r.origin.y      = y;\n    self.frame      = r;\n}\n\n-(void)setWidth:(CGFloat)width{\n    CGRect r        = self.frame;\n    r.size.width    = width;\n    self.frame      = r;\n}\n\n-(void)setHeight:(CGFloat)height{\n    CGRect r        = self.frame;\n    r.size.height   = height;\n    self.frame      = r;\n}\n\n-(void)setOrigin:(CGPoint)origin{\n    self.x          = origin.x;\n    self.y          = origin.y;\n}\n\n-(void)setSize:(CGSize)size{\n    self.width      = size.width;\n    self.height     = size.height;\n}\n\n-(void)setRight:(CGFloat)right {\n    CGRect frame = self.frame;\n    frame.origin.x = right - frame.size.width;\n    self.frame = frame;\n}\n\n-(void)setBottom:(CGFloat)bottom {\n    CGRect frame = self.frame;\n    frame.origin.y = bottom - frame.size.height;\n    self.frame = frame;\n}\n\n-(void)setCenterX:(CGFloat)centerX {\n    self.center = CGPointMake(centerX, self.center.y);\n}\n\n-(void)setCenterY:(CGFloat)centerY {\n    self.center = CGPointMake(self.center.x, centerY);\n}\n\n#pragma mark ---------------- Getters-----------------\n-(CGFloat)x{\n    return self.frame.origin.x;\n}\n\n-(CGFloat)y{\n    return self.frame.origin.y;\n}\n\n-(CGFloat)width{\n    return self.frame.size.width;\n}\n\n-(CGFloat)height{\n    return self.frame.size.height;\n}\n\n-(CGPoint)origin{\n    return CGPointMake(self.x, self.y);\n}\n\n-(CGSize)size{\n    return CGSizeMake(self.width, self.height);\n}\n\n-(CGFloat)right {\n    return self.frame.origin.x + self.frame.size.width;\n}\n\n-(CGFloat)bottom {\n    return self.frame.origin.y + self.frame.size.height;\n}\n\n-(CGFloat)centerX {\n    return self.center.x;\n}\n\n-(CGFloat)centerY {\n    return self.center.y;\n}\n\n-(UIView *)lastSubviewOnX{\n    if(self.subviews.count > 0){\n        UIView *outView = self.subviews[0];\n        \n        for(UIView *v in self.subviews)\n            if(v.x > outView.x)\n                outView = v;\n        \n        return outView;\n    }\n    \n    return nil;\n}\n\n-(UIView *)lastSubviewOnY{\n    if(self.subviews.count > 0){\n        UIView *outView = self.subviews[0];\n        \n        for(UIView *v in self.subviews)\n            if(v.y > outView.y)\n                outView = v;\n        \n        return outView;\n    }\n    \n    return nil;\n}\n\n#pragma mark ---------------- other-----------------\n/**\n * @brief 移除此view上的所有子视图\n */\n- (void)removeAllSubviews {\n    for (UIView *view in self.subviews) {\n        [view removeFromSuperview];\n    }\n    return;\n}\n\n/**\n @brief 弹窗\n @param title 弹窗标题\n message 弹窗信息\n */\n+ (void) showAlertView: (NSString*) title andMessage: (NSString *) message\n{\n    dispatch_async(dispatch_get_main_queue() , ^{\n        UIAlertView *alert = [[UIAlertView alloc] init];\n        alert.title = title;\n        alert.message = message;\n        [alert addButtonWithTitle:@\"确定\"];\n        [alert show];\n        alert = nil;\n    });\n}\n\n/**\n *  弹窗\n *\n *  @param title    弹窗标题\n *  @param message  弹窗信息\n *  @param delegate 弹窗代理\n */\n+ (void) showAlertView: (NSString*) title\n            andMessage: (NSString *) message\n          withDelegate: (UIViewController<UIAlertViewDelegate> *) delegate\n{\n    dispatch_async(dispatch_get_main_queue() , ^{\n        UIAlertView *alert = [[UIAlertView alloc] init];\n        alert.title = title;\n        alert.message = message;\n        alert.delegate = delegate;\n        alert.tag = vAlertTag;\n        [alert addButtonWithTitle:@\"确定\"];\n        [alert show];\n        alert = nil;\n    });\n}\n\n\n@end\n"
  },
  {
    "path": "README.md",
    "content": "# leftSlideMenu\n仿QQ左侧抽屉效果，左侧有渐入和放大效果。\n\n![image](https://github.com/chennyhuang/LeftSlide/blob/master/leftSlideMenu.gif)"
  }
]