Made the callback more pratical.

This commit is contained in:
Kyle Fang
2013-06-09 00:26:29 +08:00
parent 2ae2a2ba13
commit e06a8a0284
5 changed files with 53 additions and 20 deletions

View File

@@ -10,5 +10,6 @@
#import "ECSlidingViewController.h"
@interface MenuViewController : UIViewController <UITableViewDataSource, UITabBarControllerDelegate>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end

View File

@@ -10,6 +10,7 @@
@interface MenuViewController()
@property (nonatomic, strong) NSArray *menuItems;
@property (nonatomic) CGRect originalViewRect;
@end
@implementation MenuViewController
@@ -26,6 +27,14 @@
[self.slidingViewController setAnchorRightRevealAmount:280.0f];
self.slidingViewController.underLeftWidthLayout = ECFullWidth;
self.slidingViewController.continuousBlock = ^(float x){
self.tableView.frame = CGRectInset(self.originalViewRect, (280.f-x) / 10, (280.f-x) / 10);
};
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.originalViewRect = self.view.frame;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionIndex
@@ -60,4 +69,8 @@
}];
}
- (void)viewDidUnload {
[self setTableView:nil];
[super viewDidUnload];
}
@end

View File

@@ -21,9 +21,6 @@
[self.view addGestureRecognizer:self.slidingViewController.panGesture];
self.slidingViewController.continuousBlock = ^(float x){
self.view.backgroundColor = [UIColor colorWithRed:x/self.view.bounds.size.width green:50 blue:70 alpha:1];
};
}
- (IBAction)revealMenu:(id)sender

View File

@@ -248,9 +248,6 @@ NSString *const ECSlidingViewTopDidReset = @"ECSlidingViewTopDidRese
{
CGPoint currentTouchPoint = [recognizer locationInView:self.view];
CGFloat currentTouchPositionX = currentTouchPoint.x;
if(self.continuousBlock)
self.continuousBlock(currentTouchPositionX);
if (recognizer.state == UIGestureRecognizerStateBegan) {
self.initialTouchPositionX = currentTouchPositionX;
@@ -259,6 +256,10 @@ NSString *const ECSlidingViewTopDidReset = @"ECSlidingViewTopDidRese
CGFloat panAmount = self.initialTouchPositionX - currentTouchPositionX;
CGFloat newCenterPosition = self.initialHoizontalCenter - panAmount;
if (self.continuousBlock) {
self.continuousBlock(fabs(newCenterPosition - self.resettedCenter));
}
if ((newCenterPosition < self.resettedCenter && (self.anchorLeftTopViewCenter == NSNotFound || self.underRightViewController == nil)) ||
(newCenterPosition > self.resettedCenter && (self.anchorRightTopViewCenter == NSNotFound || self.underLeftViewController == nil))) {
newCenterPosition = self.resettedCenter;
@@ -312,6 +313,9 @@ NSString *const ECSlidingViewTopDidReset = @"ECSlidingViewTopDidRese
animations();
}
[self updateTopViewHorizontalCenter:newCenter];
if (self.continuousBlock) {
self.continuousBlock(fabs(newCenter - self.resettedCenter));
}
} completion:^(BOOL finished){
if (_resetStrategy & ECPanning) {
self.panGesture.enabled = YES;
@@ -382,6 +386,9 @@ NSString *const ECSlidingViewTopDidReset = @"ECSlidingViewTopDidRese
animations();
}
[self updateTopViewHorizontalCenter:self.resettedCenter];
if (self.continuousBlock) {
self.continuousBlock(0.f);
}
} completion:^(BOOL finished) {
if (complete) {
complete();
@@ -447,6 +454,7 @@ NSString *const ECSlidingViewTopDidReset = @"ECSlidingViewTopDidRese
- (void)topViewHorizontalCenterDidChange:(CGFloat)newHorizontalCenter
{
NSLog(@"%g", newHorizontalCenter);
if (newHorizontalCenter == self.resettedCenter) {
[self topDidReset];
}

View File

@@ -1,13 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.0" toolsVersion="1938" systemVersion="11D50" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="H2v-Ob-DhD">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="3084" systemVersion="12D78" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="H2v-Ob-DhD">
<dependencies>
<development defaultVersion="4200" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="933"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="2083"/>
</dependencies>
<scenes>
<!--Menu View Controller-->
<scene sceneID="cNz-He-b4Z">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="7Zx-U8-fIp" userLabel="First Responder" sceneMemberID="firstResponder"/>
<viewController storyboardIdentifier="Menu" id="Wid-ZD-WEx" customClass="MenuViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="W0P-Wb-YYH">
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
@@ -34,15 +33,19 @@
</connections>
</tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</view>
<connections>
<outlet property="tableView" destination="35U-4J-jxL" id="nWk-NS-psE"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="7Zx-U8-fIp" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-252" y="-287"/>
</scene>
<!--Third Top View Controller-->
<scene sceneID="jdT-tJ-z4E">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="zjz-eV-f99" userLabel="First Responder" sceneMemberID="firstResponder"/>
<viewController storyboardIdentifier="ThirdTop" id="LsE-e5-Jbi" customClass="ThirdTopViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="UCM-3d-Qlw">
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
@@ -65,12 +68,13 @@
<color key="backgroundColor" red="0.31581848979999999" green="0.63389155529999996" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="zjz-eV-f99" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="216" y="-1588"/>
</scene>
<!--Navigation Top View Controller-->
<scene sceneID="SXt-FO-RZE">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="yWu-gf-oQs" userLabel="First Responder" sceneMemberID="firstResponder"/>
<navigationController storyboardIdentifier="NavigationTop" definesPresentationContext="YES" id="4Nc-hH-D1X" customClass="NavigationTopViewController" sceneMemberID="viewController">
<navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="Qnn-YF-QtH">
<autoresizingMask key="autoresizingMask"/>
@@ -79,12 +83,13 @@
<segue destination="IJx-7N-r3m" kind="relationship" relationship="rootViewController" id="Onq-8Q-XNr"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yWu-gf-oQs" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="216" y="-2246"/>
</scene>
<!--Sample Table View Controller - Navigation-->
<scene sceneID="Yq6-PB-2Ba">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="l3b-ql-eKa" userLabel="First Responder" sceneMemberID="firstResponder"/>
<tableViewController id="IJx-7N-r3m" customClass="SampleTableViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="l96-ys-R5e">
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
@@ -117,12 +122,13 @@
</barButtonItem>
</navigationItem>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="l3b-ql-eKa" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="678" y="-2246"/>
</scene>
<!--View Controller-->
<scene sceneID="cSZ-Fj-saR">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="loh-8u-rWN" userLabel="First Responder" sceneMemberID="firstResponder"/>
<viewController id="TUY-D5-X7T" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="AlX-k5-7De">
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
@@ -131,12 +137,13 @@
</view>
<navigationItem key="navigationItem" id="Eru-S9-pYK"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="loh-8u-rWN" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1150" y="-2246"/>
</scene>
<!--Second Top View Controller-->
<scene sceneID="dCa-Xc-F9L">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="7AE-EV-BdB" userLabel="First Responder" sceneMemberID="firstResponder"/>
<viewController storyboardIdentifier="SecondTop" id="XYc-ji-qQz" customClass="SecondTopViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Z4T-qv-OS6">
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
@@ -159,12 +166,13 @@
<color key="backgroundColor" red="0.0" green="0.83163265310000001" blue="0.68719590809999997" alpha="1" colorSpace="calibratedRGB"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="7AE-EV-BdB" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="216" y="-942"/>
</scene>
<!--First Top View Controller-->
<scene sceneID="FCi-rO-pkm">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="opW-8m-5uU" userLabel="First Responder" sceneMemberID="firstResponder"/>
<viewController storyboardIdentifier="FirstTop" id="fYD-9N-EQW" customClass="FirstTopViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="d8v-Bl-Aef">
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
@@ -192,12 +200,13 @@
<color key="backgroundColor" red="1" green="0.5" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="opW-8m-5uU" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="216" y="-286"/>
</scene>
<!--Under Right View Controller-->
<scene sceneID="kzo-vV-v3D">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="wZR-cS-BX4" userLabel="First Responder" sceneMemberID="firstResponder"/>
<tableViewController storyboardIdentifier="UnderRight" id="Ig4-5y-QXh" customClass="UnderRightViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="st9-09-gdI">
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
@@ -231,6 +240,7 @@
<outlet property="searchDisplayController" destination="pGs-mS-Bfe" id="4P8-CS-6r5"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="wZR-cS-BX4" userLabel="First Responder" sceneMemberID="firstResponder"/>
<searchDisplayController id="pGs-mS-Bfe">
<connections>
<outlet property="delegate" destination="Ig4-5y-QXh" id="sGn-oe-3vf"/>
@@ -243,16 +253,17 @@
</objects>
<point key="canvasLocation" x="678" y="-287"/>
</scene>
<!--Initial Sliding View Controller-->
<scene sceneID="OC6-i3-9aC">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="BIB-pv-C48" userLabel="First Responder" sceneMemberID="firstResponder"/>
<viewController id="H2v-Ob-DhD" customClass="InitialSlidingViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="IWW-TW-Yeo">
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="BIB-pv-C48" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-720" y="-287"/>
</scene>
@@ -273,6 +284,9 @@
</class>
<class className="MenuViewController" superclassName="UIViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/MenuViewController.h"/>
<relationships>
<relationship kind="outlet" name="tableView" candidateClass="UITableView"/>
</relationships>
</class>
<class className="NavigationTopViewController" superclassName="UINavigationController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/NavigationTopViewController.h"/>