├── .gitignore ├── LICENSE ├── PSD ├── sliderPageControl.psd └── sliderPageControlBg.psd ├── README.md ├── SliderPageControl ├── SliderPageControl.bundle │ └── images │ │ ├── sliderPageControl.png │ │ ├── sliderPageControl@2x.png │ │ ├── sliderPageControlBg.png │ │ └── sliderPageControlBg@2x.png ├── SliderPageControl.h └── SliderPageControl.m └── SliderPageControlDemo ├── Classes ├── SliderPageControlDemoAppDelegate.h ├── SliderPageControlDemoAppDelegate.m ├── SliderPageControlDemoViewController.h └── SliderPageControlDemoViewController.m ├── MainWindow.xib ├── SliderPageControlDemo-Info.plist ├── SliderPageControlDemo.xcodeproj ├── honcheng.mode1v3 ├── honcheng.pbxuser └── project.pbxproj ├── SliderPageControlDemo_Prefix.pch └── main.m /.gitignore: -------------------------------------------------------------------------------- 1 | SliderPageControlDemo/SliderPageControlDemo.xcodeproj/project.xcworkspace/xcuserdata/honcheng.xcuserdatad/UserInterfaceState.xcuserstate 2 | SliderPageControlDemo/SliderPageControlDemo.xcodeproj/xcuserdata/honcheng.xcuserdatad/xcschemes/SliderPageControlDemo.xcscheme 3 | SliderPageControlDemo/SliderPageControlDemo.xcodeproj/xcuserdata/honcheng.xcuserdatad/xcschemes/xcschememanagement.plist 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 Muh Hon Cheng 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject 9 | to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT 15 | WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 16 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR 18 | PURPOSE AND NONINFRINGEMENT. IN NO EVENT 19 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR 23 | IN CONNECTION WITH THE SOFTWARE OR 24 | THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | 26 | @author Muh Hon Cheng 27 | @copyright 2012 Muh Hon Cheng -------------------------------------------------------------------------------- /PSD/sliderPageControl.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/honcheng/SliderPageControl-for-iOS/154518a0bbf32d4d72a4e2bfec24b0a9442741d0/PSD/sliderPageControl.psd -------------------------------------------------------------------------------- /PSD/sliderPageControlBg.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/honcheng/SliderPageControl-for-iOS/154518a0bbf32d4d72a4e2bfec24b0a9442741d0/PSD/sliderPageControlBg.psd -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SliderPageControl for iOS 2 | ========================= 3 | 4 | This is an alternative for UIPageControl. See video [here](http://www.honcheng.com/2010/12/SliderPageControl---open-source-alternative-for-UIPageControl-in-iOS) 5 | 6 | Required Files 7 | -------------- 8 | 1. SliderPageControl.h 9 | 2. SliderPageControl.m 10 | 3. SliderPageControl.bundle/images/sliderPageControl.png 11 | 4. SliderPageControl.bundle/images/sliderPageControlBg.png 12 | 13 | Usage 14 | ----- 15 | 16 | 1) To integrate SliderPageControl, drag the files above to your XCode Project, and add to your view. 17 | 18 | #import SliderPageControl.h 19 | 20 | 2) set number of pages 21 | 22 | - (void)setNumberOfPages:(int)page 23 | 24 | 3) returns the current page 25 | 26 | - (int)currentPage 27 | 28 | 4) set the current page. set animated=YES to animate the control 29 | 30 | - (void)setCurrentPage:(int)_currentPage animated:(BOOL)animated 31 | 32 | 5) set page title that is visible when the control is dragged 33 | 34 | - (NSString *)sliderPageController:(id)controller hintTitleForPage:(NSInteger)page 35 | 36 | 6) Skinning SliderPageControl 37 | To skin SliderPageControl, use the provided PSD file to change the control image (sliderPageControl.png) and the background (sliderPageControlBg.png) 38 | 39 | You can find more information about SliderPageControl at the link below 40 | 41 | Requirements 42 | ------------ 43 | * ARC 44 | * XCode 4.4 (auto-synthesis) 45 | 46 | Contact 47 | ------- 48 | 49 | [@honcheng](http://twitter.com/honcheng) 50 | [honcheng.com](http://honcheng.com) 51 | 52 | ![](http://www.cocoacontrols.com/analytics/honcheng/sliderpagecontrol-for-ios.png) -------------------------------------------------------------------------------- /SliderPageControl/SliderPageControl.bundle/images/sliderPageControl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/honcheng/SliderPageControl-for-iOS/154518a0bbf32d4d72a4e2bfec24b0a9442741d0/SliderPageControl/SliderPageControl.bundle/images/sliderPageControl.png -------------------------------------------------------------------------------- /SliderPageControl/SliderPageControl.bundle/images/sliderPageControl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/honcheng/SliderPageControl-for-iOS/154518a0bbf32d4d72a4e2bfec24b0a9442741d0/SliderPageControl/SliderPageControl.bundle/images/sliderPageControl@2x.png -------------------------------------------------------------------------------- /SliderPageControl/SliderPageControl.bundle/images/sliderPageControlBg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/honcheng/SliderPageControl-for-iOS/154518a0bbf32d4d72a4e2bfec24b0a9442741d0/SliderPageControl/SliderPageControl.bundle/images/sliderPageControlBg.png -------------------------------------------------------------------------------- /SliderPageControl/SliderPageControl.bundle/images/sliderPageControlBg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/honcheng/SliderPageControl-for-iOS/154518a0bbf32d4d72a4e2bfec24b0a9442741d0/SliderPageControl/SliderPageControl.bundle/images/sliderPageControlBg@2x.png -------------------------------------------------------------------------------- /SliderPageControl/SliderPageControl.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2010 Muh Hon Cheng 3 | * Created by honcheng on 12/11/10. 4 | * 5 | * Permission is hereby granted, free of charge, to any person obtaining 6 | * a copy of this software and associated documentation files (the 7 | * "Software"), to deal in the Software without restriction, including 8 | * without limitation the rights to use, copy, modify, merge, publish, 9 | * distribute, sublicense, and/or sell copies of the Software, and to 10 | * permit persons to whom the Software is furnished to do so, subject 11 | * to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be 14 | * included in all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT 17 | * WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR 20 | * PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22 | * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR 25 | * IN CONNECTION WITH THE SOFTWARE OR 26 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 | * 28 | * @author Muh Hon Cheng 29 | * @copyright 2010 Muh Hon Cheng 30 | * @version 31 | * 32 | */ 33 | 34 | #import 35 | 36 | @protocol SliderPageControlDelegate 37 | @optional 38 | - (NSString *)sliderPageController:(id)controller hintTitleForPage:(NSInteger)page; 39 | - (BOOL)respondsToSelector:(SEL)aSelector; 40 | @end 41 | 42 | 43 | @interface SliderPageControl : UIControl 44 | @property (nonatomic, unsafe_unretained) id delegate; 45 | @property (nonatomic, assign) BOOL showsHint, hasDragged; 46 | @property (nonatomic, strong) UIImageView *backgroundView; 47 | @property (nonatomic, strong) UIImageView *slider; 48 | @property (nonatomic, assign) int numberOfPages, currentPage; 49 | @property (nonatomic, assign) CGPoint beganPoint; 50 | @property (nonatomic, strong) UIView *maskView; 51 | @property (nonatomic, strong) UILabel *hintLabel; 52 | 53 | - (void)setCurrentPage:(int)_currentPage animated:(BOOL)animated; 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /SliderPageControl/SliderPageControl.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2010 Muh Hon Cheng 3 | * Created by honcheng on 12/11/10. 4 | * 5 | * Permission is hereby granted, free of charge, to any person obtaining 6 | * a copy of this software and associated documentation files (the 7 | * "Software"), to deal in the Software without restriction, including 8 | * without limitation the rights to use, copy, modify, merge, publish, 9 | * distribute, sublicense, and/or sell copies of the Software, and to 10 | * permit persons to whom the Software is furnished to do so, subject 11 | * to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be 14 | * included in all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT 17 | * WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR 20 | * PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22 | * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR 25 | * IN CONNECTION WITH THE SOFTWARE OR 26 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 | * 28 | * @author Muh Hon Cheng 29 | * @copyright 2010 Muh Hon Cheng 30 | * @version 31 | * 32 | */ 33 | 34 | #import "SliderPageControl.h" 35 | 36 | #define MASK_VISIBLE_ALPHA 0.5 37 | #define UPPER_TOUCH_LIMIT -50 38 | 39 | @interface SliderPageControl() 40 | - (void)showMaskView:(BOOL)show; 41 | - (void)displayHintForPage:(int)page; 42 | - (void)removeMaskView; 43 | @end 44 | 45 | @implementation SliderPageControl 46 | 47 | - (id)initWithFrame:(CGRect)frame { 48 | if (self = [super initWithFrame:frame]) { 49 | // Initialization code 50 | [self setBackgroundColor:[UIColor clearColor]]; 51 | _backgroundView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,frame.size.width,frame.size.height)]; 52 | [_backgroundView setBackgroundColor:[UIColor clearColor]]; 53 | [self addSubview:_backgroundView]; 54 | 55 | _slider = [[UIImageView alloc] initWithFrame:CGRectZero]; 56 | [_slider setBackgroundColor:[UIColor clearColor]]; 57 | [_slider setAlpha:0.8]; 58 | [self addSubview:_slider]; 59 | 60 | [_backgroundView setImage:[[UIImage imageNamed:@"SliderPageControl.bundle/images/sliderPageControlBg.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:10]]; 61 | [_slider setImage:[[UIImage imageNamed:@"SliderPageControl.bundle/images/sliderPageControl.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:10]]; 62 | } 63 | return self; 64 | } 65 | 66 | - (void)setNumberOfPages:(int)page 67 | { 68 | _numberOfPages = page; 69 | [self setNeedsDisplay]; 70 | 71 | int width = self.frame.size.width/_numberOfPages; 72 | int x = width*_currentPage; 73 | 74 | [UIView beginAnimations:nil context:nil]; 75 | [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 76 | [self.slider setFrame:CGRectMake(x,0,width,self.frame.size.height)]; 77 | [UIView commitAnimations]; 78 | } 79 | 80 | - (void)setCurrentPage:(int)currentPage 81 | { 82 | [self setCurrentPage:currentPage animated:NO]; 83 | } 84 | 85 | - (void)setCurrentPage:(int)currentPage animated:(BOOL)animated 86 | { 87 | _currentPage = currentPage; 88 | 89 | if (animated) 90 | { 91 | [UIView beginAnimations:nil context:nil]; 92 | [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 93 | } 94 | 95 | int width = self.frame.size.width/self.numberOfPages; 96 | int x = width*currentPage; 97 | [self.slider setFrame:CGRectMake(x,0,width,self.frame.size.height)]; 98 | if (animated) [UIView commitAnimations]; 99 | } 100 | 101 | - (void)drawRect:(CGRect)rect { 102 | // Drawing code 103 | CGContextRef myContext = UIGraphicsGetCurrentContext(); 104 | float diameter = 5; 105 | 106 | CGFloat blackColor[4]; 107 | blackColor[0]=0.0; 108 | blackColor[1]=0.0; 109 | blackColor[2]=0.0; 110 | blackColor[3]=1.0; 111 | float width = self.frame.size.width/self.numberOfPages; 112 | 113 | int i; 114 | for (i=0; iself.frame.size.width-sliderFrame.size.width) x = self.frame.size.width-sliderFrame.size.width; 212 | 213 | sliderFrame.origin.x = x; 214 | [self.slider setFrame:sliderFrame]; 215 | 216 | [UIView commitAnimations]; 217 | 218 | [super touchesBegan:touches withEvent:event]; 219 | } 220 | 221 | - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 222 | { 223 | if (!self.hasDragged) [self showMaskView:YES]; 224 | 225 | self.hasDragged = YES; 226 | CGPoint movedPoint = [[touches anyObject] locationInView:self]; 227 | 228 | CGRect sliderFrame = [self.slider frame]; 229 | float x = movedPoint.x - sliderFrame.size.width/2; 230 | if (x<0) x=0; 231 | else if (x>self.frame.size.width-sliderFrame.size.width) x = self.frame.size.width-sliderFrame.size.width; 232 | 233 | sliderFrame.origin.x = x; 234 | [self.slider setFrame:sliderFrame]; 235 | 236 | [super touchesMoved:touches withEvent:event]; 237 | 238 | int hintPage = 0; 239 | float center_x = [self.slider frame].origin.x + [self.slider frame].size.width/2; 240 | int i; 241 | for (i=0; iself.frame.size.height) 275 | { 276 | // ended outside, considered a cancel, should snap to original location 277 | 278 | [UIView beginAnimations:nil context:nil]; 279 | [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 280 | CGRect sliderFrame = [self.slider frame]; 281 | sliderFrame.origin.x = self.beganPoint.x; 282 | [self.slider setFrame:sliderFrame]; 283 | [UIView commitAnimations]; 284 | } 285 | else 286 | { 287 | // touch ended inside, should snap to new location 288 | float center_x = [self.slider frame].origin.x + [self.slider frame].size.width/2; 289 | int i; 290 | for (i=0; i 29 | * @copyright 2010 Muh Hon Cheng 30 | * @version 31 | * 32 | */ 33 | 34 | #import 35 | 36 | @interface SliderPageControlDemoAppDelegate : NSObject 37 | @property (nonatomic, strong) IBOutlet UIWindow *window; 38 | @end 39 | 40 | -------------------------------------------------------------------------------- /SliderPageControlDemo/Classes/SliderPageControlDemoAppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2010 Muh Hon Cheng 3 | * Created by honcheng on 12/11/10. 4 | * 5 | * Permission is hereby granted, free of charge, to any person obtaining 6 | * a copy of this software and associated documentation files (the 7 | * "Software"), to deal in the Software without restriction, including 8 | * without limitation the rights to use, copy, modify, merge, publish, 9 | * distribute, sublicense, and/or sell copies of the Software, and to 10 | * permit persons to whom the Software is furnished to do so, subject 11 | * to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be 14 | * included in all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT 17 | * WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR 20 | * PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22 | * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR 25 | * IN CONNECTION WITH THE SOFTWARE OR 26 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 | * 28 | * @author Muh Hon Cheng 29 | * @copyright 2010 Muh Hon Cheng 30 | * @version 31 | * 32 | */ 33 | 34 | #import "SliderPageControlDemoAppDelegate.h" 35 | #import "SliderPageControlDemoViewController.h" 36 | 37 | @implementation SliderPageControlDemoAppDelegate 38 | 39 | #pragma mark - 40 | #pragma mark Application lifecycle 41 | 42 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 43 | 44 | // Override point for customization after application launch. 45 | 46 | [self.window makeKeyAndVisible]; 47 | 48 | SliderPageControlDemoViewController *vc = [[SliderPageControlDemoViewController alloc] init]; 49 | [self.window setRootViewController:vc]; 50 | 51 | return YES; 52 | } 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /SliderPageControlDemo/Classes/SliderPageControlDemoViewController.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2010 Muh Hon Cheng 3 | * Created by honcheng on 12/11/10. 4 | * 5 | * Permission is hereby granted, free of charge, to any person obtaining 6 | * a copy of this software and associated documentation files (the 7 | * "Software"), to deal in the Software without restriction, including 8 | * without limitation the rights to use, copy, modify, merge, publish, 9 | * distribute, sublicense, and/or sell copies of the Software, and to 10 | * permit persons to whom the Software is furnished to do so, subject 11 | * to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be 14 | * included in all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT 17 | * WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR 20 | * PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22 | * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR 25 | * IN CONNECTION WITH THE SOFTWARE OR 26 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 | * 28 | * @author Muh Hon Cheng 29 | * @copyright 2010 Muh Hon Cheng 30 | * @version 31 | * 32 | */ 33 | #import 34 | #import "SliderPageControl.h" 35 | 36 | @interface SliderPageControlDemoViewController : UIViewController 37 | @property (nonatomic, strong) SliderPageControl *sliderPageControl; 38 | @property (nonatomic, strong) NSMutableArray *demoContent; 39 | @property (nonatomic, strong) UIScrollView *scrollView; 40 | @property (nonatomic, assign) BOOL pageControlUsed; 41 | 42 | - (void)slideToCurrentPage:(bool)animated; 43 | - (void)changeToPage:(int)page animated:(BOOL)animated; 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /SliderPageControlDemo/Classes/SliderPageControlDemoViewController.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2010 Muh Hon Cheng 3 | * Created by honcheng on 12/11/10. 4 | * 5 | * Permission is hereby granted, free of charge, to any person obtaining 6 | * a copy of this software and associated documentation files (the 7 | * "Software"), to deal in the Software without restriction, including 8 | * without limitation the rights to use, copy, modify, merge, publish, 9 | * distribute, sublicense, and/or sell copies of the Software, and to 10 | * permit persons to whom the Software is furnished to do so, subject 11 | * to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be 14 | * included in all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT 17 | * WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR 20 | * PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22 | * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR 25 | * IN CONNECTION WITH THE SOFTWARE OR 26 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 | * 28 | * @author Muh Hon Cheng 29 | * @copyright 2010 Muh Hon Cheng 30 | * @version 31 | * 32 | */ 33 | 34 | #import "SliderPageControlDemoViewController.h" 35 | 36 | 37 | @implementation SliderPageControlDemoViewController 38 | 39 | - (id)init 40 | { 41 | if (self = [super init]) 42 | { 43 | [self.view setBackgroundColor:[UIColor blackColor]]; 44 | 45 | _demoContent = [NSMutableArray array]; 46 | NSMutableDictionary *page1 = [NSMutableDictionary dictionary]; 47 | [page1 setObject:@"RED" forKey:@"title"]; 48 | [page1 setObject:[UIColor redColor] forKey:@"color"]; 49 | [_demoContent addObject:page1]; 50 | NSMutableDictionary *page2 = [NSMutableDictionary dictionary]; 51 | [page2 setObject:@"ORANGE" forKey:@"title"]; 52 | [page2 setObject:[UIColor orangeColor] forKey:@"color"]; 53 | [_demoContent addObject:page2]; 54 | NSMutableDictionary *page3 = [NSMutableDictionary dictionary]; 55 | [page3 setObject:@"YELLOW" forKey:@"title"]; 56 | [page3 setObject:[UIColor yellowColor] forKey:@"color"]; 57 | [_demoContent addObject:page3]; 58 | NSMutableDictionary *page4 = [NSMutableDictionary dictionary]; 59 | [page4 setObject:@"GREEN" forKey:@"title"]; 60 | [page4 setObject:[UIColor greenColor] forKey:@"color"]; 61 | [_demoContent addObject:page4]; 62 | NSMutableDictionary *page5 = [NSMutableDictionary dictionary]; 63 | [page5 setObject:@"BLUE" forKey:@"title"]; 64 | [page5 setObject:[UIColor blueColor] forKey:@"color"]; 65 | [_demoContent addObject:page5]; 66 | NSMutableDictionary *page6 = [NSMutableDictionary dictionary]; 67 | [page6 setObject:@"PURPLE" forKey:@"title"]; 68 | [page6 setObject:[UIColor purpleColor] forKey:@"color"]; 69 | [_demoContent addObject:page6]; 70 | 71 | _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,[self.view bounds].size.width,[self.view bounds].size.height)]; 72 | [_scrollView setPagingEnabled:YES]; 73 | [_scrollView setContentSize:CGSizeMake([self.demoContent count]*self.scrollView.frame.size.width, self.scrollView.frame.size.height)]; 74 | [_scrollView setShowsHorizontalScrollIndicator:NO]; 75 | [_scrollView setDelegate:self]; 76 | [self.view addSubview:_scrollView]; 77 | 78 | _sliderPageControl = [[SliderPageControl alloc] initWithFrame:CGRectMake(0,[self.view bounds].size.height-20,[self.view bounds].size.width,20)]; 79 | [_sliderPageControl addTarget:self action:@selector(onPageChanged:) forControlEvents:UIControlEventValueChanged]; 80 | [_sliderPageControl setDelegate:self]; 81 | [_sliderPageControl setShowsHint:YES]; 82 | [self.view addSubview:_sliderPageControl]; 83 | [_sliderPageControl setNumberOfPages:[self.demoContent count]]; 84 | [_sliderPageControl setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin]; 85 | 86 | 87 | for (int i=0; i<[_demoContent count]; i++) 88 | { 89 | UIView *view = [[UIView alloc] initWithFrame:CGRectMake(i*_scrollView.frame.size.width,0,_scrollView.frame.size.width,_scrollView.frame.size.height)]; 90 | [view setBackgroundColor:[[_demoContent objectAtIndex:i] objectForKey:@"color"]]; 91 | [_scrollView addSubview:view]; 92 | } 93 | 94 | [self changeToPage:1 animated:NO]; 95 | } 96 | return self; 97 | } 98 | 99 | 100 | - (void)didReceiveMemoryWarning { 101 | // Releases the view if it doesn't have a superview. 102 | [super didReceiveMemoryWarning]; 103 | 104 | // Release any cached data, images, etc. that aren't in use. 105 | } 106 | 107 | - (void)viewDidUnload { 108 | [super viewDidUnload]; 109 | // Release any retained subviews of the main view. 110 | // e.g. self.myOutlet = nil; 111 | } 112 | 113 | #pragma mark scrollview delegate 114 | 115 | - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView_ 116 | { 117 | self.pageControlUsed = NO; 118 | } 119 | 120 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView 121 | { 122 | if (self.pageControlUsed) 123 | { 124 | return; 125 | } 126 | 127 | CGFloat pageWidth = self.scrollView.frame.size.width; 128 | int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; 129 | 130 | [self.sliderPageControl setCurrentPage:page animated:YES]; 131 | } 132 | 133 | - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView_ 134 | { 135 | self.pageControlUsed = NO; 136 | } 137 | 138 | #pragma mark sliderPageControlDelegate 139 | 140 | - (NSString *)sliderPageController:(id)controller hintTitleForPage:(NSInteger)page 141 | { 142 | NSString *hintTitle = [[self.demoContent objectAtIndex:page] objectForKey:@"title"]; 143 | return hintTitle; 144 | } 145 | 146 | - (void)onPageChanged:(id)sender 147 | { 148 | self.pageControlUsed = YES; 149 | [self slideToCurrentPage:YES]; 150 | } 151 | 152 | - (void)slideToCurrentPage:(bool)animated 153 | { 154 | int page = self.sliderPageControl.currentPage; 155 | 156 | CGRect frame = self.scrollView.frame; 157 | frame.origin.x = frame.size.width * page; 158 | frame.origin.y = 0; 159 | [self.scrollView scrollRectToVisible:frame animated:animated]; 160 | } 161 | 162 | - (void)changeToPage:(int)page animated:(BOOL)animated 163 | { 164 | [self.sliderPageControl setCurrentPage:page animated:YES]; 165 | [self slideToCurrentPage:animated]; 166 | } 167 | 168 | @end 169 | -------------------------------------------------------------------------------- /SliderPageControlDemo/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 800 5 | 10D540 6 | 760 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 81 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | 45 | 1316 46 | 47 | {320, 480} 48 | 49 | 50 | 1 51 | MSAxIDEAA 52 | 53 | NO 54 | NO 55 | 56 | IBCocoaTouchFramework 57 | YES 58 | 59 | 60 | 61 | 62 | YES 63 | 64 | 65 | delegate 66 | 67 | 68 | 69 | 4 70 | 71 | 72 | 73 | window 74 | 75 | 76 | 77 | 5 78 | 79 | 80 | 81 | 82 | YES 83 | 84 | 0 85 | 86 | 87 | 88 | 89 | 90 | 2 91 | 92 | 93 | YES 94 | 95 | 96 | 97 | 98 | -1 99 | 100 | 101 | File's Owner 102 | 103 | 104 | 3 105 | 106 | 107 | 108 | 109 | -2 110 | 111 | 112 | 113 | 114 | 115 | 116 | YES 117 | 118 | YES 119 | -1.CustomClassName 120 | -2.CustomClassName 121 | 2.IBAttributePlaceholdersKey 122 | 2.IBEditorWindowLastContentRect 123 | 2.IBPluginDependency 124 | 3.CustomClassName 125 | 3.IBPluginDependency 126 | 127 | 128 | YES 129 | UIApplication 130 | UIResponder 131 | 132 | YES 133 | 134 | 135 | YES 136 | 137 | 138 | {{198, 376}, {320, 480}} 139 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 140 | SliderPageControlDemoAppDelegate 141 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 142 | 143 | 144 | 145 | YES 146 | 147 | 148 | YES 149 | 150 | 151 | 152 | 153 | YES 154 | 155 | 156 | YES 157 | 158 | 159 | 160 | 9 161 | 162 | 163 | 164 | YES 165 | 166 | SliderPageControlDemoAppDelegate 167 | NSObject 168 | 169 | window 170 | UIWindow 171 | 172 | 173 | IBProjectSource 174 | Classes/SliderPageControlDemoAppDelegate.h 175 | 176 | 177 | 178 | SliderPageControlDemoAppDelegate 179 | NSObject 180 | 181 | IBUserSource 182 | 183 | 184 | 185 | 186 | 187 | 0 188 | IBCocoaTouchFramework 189 | 190 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 191 | 192 | 193 | YES 194 | SliderPageControlDemo.xcodeproj 195 | 3 196 | 81 197 | 198 | 199 | -------------------------------------------------------------------------------- /SliderPageControlDemo/SliderPageControlDemo-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | SliderPgCtrl 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.honcheng.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | UIStatusBarStyle 30 | UIStatusBarStyleBlackOpaque 31 | 32 | 33 | -------------------------------------------------------------------------------- /SliderPageControlDemo/SliderPageControlDemo.xcodeproj/honcheng.mode1v3: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ActivePerspectiveName 6 | Project 7 | AllowedModules 8 | 9 | 10 | BundleLoadPath 11 | 12 | MaxInstances 13 | n 14 | Module 15 | PBXSmartGroupTreeModule 16 | Name 17 | Groups and Files Outline View 18 | 19 | 20 | BundleLoadPath 21 | 22 | MaxInstances 23 | n 24 | Module 25 | PBXNavigatorGroup 26 | Name 27 | Editor 28 | 29 | 30 | BundleLoadPath 31 | 32 | MaxInstances 33 | n 34 | Module 35 | XCTaskListModule 36 | Name 37 | Task List 38 | 39 | 40 | BundleLoadPath 41 | 42 | MaxInstances 43 | n 44 | Module 45 | XCDetailModule 46 | Name 47 | File and Smart Group Detail Viewer 48 | 49 | 50 | BundleLoadPath 51 | 52 | MaxInstances 53 | 1 54 | Module 55 | PBXBuildResultsModule 56 | Name 57 | Detailed Build Results Viewer 58 | 59 | 60 | BundleLoadPath 61 | 62 | MaxInstances 63 | 1 64 | Module 65 | PBXProjectFindModule 66 | Name 67 | Project Batch Find Tool 68 | 69 | 70 | BundleLoadPath 71 | 72 | MaxInstances 73 | n 74 | Module 75 | XCProjectFormatConflictsModule 76 | Name 77 | Project Format Conflicts List 78 | 79 | 80 | BundleLoadPath 81 | 82 | MaxInstances 83 | n 84 | Module 85 | PBXBookmarksModule 86 | Name 87 | Bookmarks Tool 88 | 89 | 90 | BundleLoadPath 91 | 92 | MaxInstances 93 | n 94 | Module 95 | PBXClassBrowserModule 96 | Name 97 | Class Browser 98 | 99 | 100 | BundleLoadPath 101 | 102 | MaxInstances 103 | n 104 | Module 105 | PBXCVSModule 106 | Name 107 | Source Code Control Tool 108 | 109 | 110 | BundleLoadPath 111 | 112 | MaxInstances 113 | n 114 | Module 115 | PBXDebugBreakpointsModule 116 | Name 117 | Debug Breakpoints Tool 118 | 119 | 120 | BundleLoadPath 121 | 122 | MaxInstances 123 | n 124 | Module 125 | XCDockableInspector 126 | Name 127 | Inspector 128 | 129 | 130 | BundleLoadPath 131 | 132 | MaxInstances 133 | n 134 | Module 135 | PBXOpenQuicklyModule 136 | Name 137 | Open Quickly Tool 138 | 139 | 140 | BundleLoadPath 141 | 142 | MaxInstances 143 | 1 144 | Module 145 | PBXDebugSessionModule 146 | Name 147 | Debugger 148 | 149 | 150 | BundleLoadPath 151 | 152 | MaxInstances 153 | 1 154 | Module 155 | PBXDebugCLIModule 156 | Name 157 | Debug Console 158 | 159 | 160 | BundleLoadPath 161 | 162 | MaxInstances 163 | n 164 | Module 165 | XCSnapshotModule 166 | Name 167 | Snapshots Tool 168 | 169 | 170 | BundlePath 171 | /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources 172 | Description 173 | DefaultDescriptionKey 174 | DockingSystemVisible 175 | 176 | Extension 177 | mode1v3 178 | FavBarConfig 179 | 180 | PBXProjectModuleGUID 181 | F879B1DB12B31FA9006DE72A 182 | XCBarModuleItemNames 183 | 184 | XCBarModuleItems 185 | 186 | 187 | FirstTimeWindowDisplayed 188 | 189 | Identifier 190 | com.apple.perspectives.project.mode1v3 191 | MajorVersion 192 | 33 193 | MinorVersion 194 | 0 195 | Name 196 | Default 197 | Notifications 198 | 199 | OpenEditors 200 | 201 | PerspectiveWidths 202 | 203 | -1 204 | -1 205 | 206 | Perspectives 207 | 208 | 209 | ChosenToolbarItems 210 | 211 | active-combo-popup 212 | action 213 | NSToolbarFlexibleSpaceItem 214 | debugger-enable-breakpoints 215 | go 216 | build 217 | build-and-go 218 | clean-target 219 | com.apple.ide.PBXToolbarStopButton 220 | get-info 221 | NSToolbarFlexibleSpaceItem 222 | com.apple.pbx.toolbar.searchfield 223 | 224 | ControllerClassBaseName 225 | 226 | IconName 227 | WindowOfProjectWithEditor 228 | Identifier 229 | perspective.project 230 | IsVertical 231 | 232 | Layout 233 | 234 | 235 | ContentConfiguration 236 | 237 | PBXBottomSmartGroupGIDs 238 | 239 | 1C37FBAC04509CD000000102 240 | 1C37FAAC04509CD000000102 241 | 1C37FABC05509CD000000102 242 | 1C37FABC05539CD112110102 243 | E2644B35053B69B200211256 244 | 1C37FABC04509CD000100104 245 | 1CC0EA4004350EF90044410B 246 | 1CC0EA4004350EF90041110B 247 | 248 | PBXProjectModuleGUID 249 | 1CE0B1FE06471DED0097A5F4 250 | PBXProjectModuleLabel 251 | Files 252 | PBXProjectStructureProvided 253 | yes 254 | PBXSmartGroupTreeModuleColumnData 255 | 256 | PBXSmartGroupTreeModuleColumnWidthsKey 257 | 258 | 243 259 | 260 | PBXSmartGroupTreeModuleColumnsKey_v4 261 | 262 | MainColumn 263 | 264 | 265 | PBXSmartGroupTreeModuleOutlineStateKey_v7 266 | 267 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 268 | 269 | 29B97314FDCFA39411CA2CEA 270 | F879B1F812B3229F006DE72A 271 | 080E96DDFE201D6D7F000001 272 | 29B97317FDCFA39411CA2CEA 273 | 29B97323FDCFA39411CA2CEA 274 | 1C37FABC05509CD000000102 275 | 276 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 277 | 278 | 279 | 3 280 | 1 281 | 0 282 | 283 | 284 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 285 | {{0, 0}, {243, 682}} 286 | 287 | PBXTopSmartGroupGIDs 288 | 289 | XCIncludePerspectivesSwitch 290 | 291 | XCSharingToken 292 | com.apple.Xcode.GFSharingToken 293 | 294 | GeometryConfiguration 295 | 296 | Frame 297 | {{0, 0}, {260, 700}} 298 | GroupTreeTableConfiguration 299 | 300 | MainColumn 301 | 243 302 | 303 | RubberWindowFrame 304 | -1179 230 1156 741 -1440 150 1440 900 305 | 306 | Module 307 | PBXSmartGroupTreeModule 308 | Proportion 309 | 260pt 310 | 311 | 312 | Dock 313 | 314 | 315 | BecomeActive 316 | 317 | ContentConfiguration 318 | 319 | PBXProjectModuleGUID 320 | 1CE0B20306471E060097A5F4 321 | PBXProjectModuleLabel 322 | SliderPageControl.m 323 | PBXSplitModuleInNavigatorKey 324 | 325 | Split0 326 | 327 | PBXProjectModuleGUID 328 | 1CE0B20406471E060097A5F4 329 | PBXProjectModuleLabel 330 | SliderPageControl.m 331 | _historyCapacity 332 | 0 333 | bookmark 334 | F82DE9AC12B3D17500976738 335 | history 336 | 337 | F879B21012B32328006DE72A 338 | F879B22312B32526006DE72A 339 | F879B26812B32843006DE72A 340 | F879B26B12B32843006DE72A 341 | F82DE9A812B3D17500976738 342 | F82DE9A912B3D17500976738 343 | F82DE9AA12B3D17500976738 344 | F82DE9AB12B3D17500976738 345 | 346 | 347 | SplitCount 348 | 1 349 | 350 | StatusBarVisibility 351 | 352 | 353 | GeometryConfiguration 354 | 355 | Frame 356 | {{0, 0}, {891, 679}} 357 | RubberWindowFrame 358 | -1179 230 1156 741 -1440 150 1440 900 359 | 360 | Module 361 | PBXNavigatorGroup 362 | Proportion 363 | 679pt 364 | 365 | 366 | ContentConfiguration 367 | 368 | PBXProjectModuleGUID 369 | 1CE0B20506471E060097A5F4 370 | PBXProjectModuleLabel 371 | Detail 372 | 373 | GeometryConfiguration 374 | 375 | Frame 376 | {{0, 684}, {891, 16}} 377 | RubberWindowFrame 378 | -1179 230 1156 741 -1440 150 1440 900 379 | 380 | Module 381 | XCDetailModule 382 | Proportion 383 | 16pt 384 | 385 | 386 | Proportion 387 | 891pt 388 | 389 | 390 | Name 391 | Project 392 | ServiceClasses 393 | 394 | XCModuleDock 395 | PBXSmartGroupTreeModule 396 | XCModuleDock 397 | PBXNavigatorGroup 398 | XCDetailModule 399 | 400 | TableOfContents 401 | 402 | F82DE9AD12B3D17500976738 403 | 1CE0B1FE06471DED0097A5F4 404 | F82DE9AE12B3D17500976738 405 | 1CE0B20306471E060097A5F4 406 | 1CE0B20506471E060097A5F4 407 | 408 | ToolbarConfigUserDefaultsMinorVersion 409 | 2 410 | ToolbarConfiguration 411 | xcode.toolbar.config.defaultV3 412 | 413 | 414 | ControllerClassBaseName 415 | 416 | IconName 417 | WindowOfProject 418 | Identifier 419 | perspective.morph 420 | IsVertical 421 | 0 422 | Layout 423 | 424 | 425 | BecomeActive 426 | 1 427 | ContentConfiguration 428 | 429 | PBXBottomSmartGroupGIDs 430 | 431 | 1C37FBAC04509CD000000102 432 | 1C37FAAC04509CD000000102 433 | 1C08E77C0454961000C914BD 434 | 1C37FABC05509CD000000102 435 | 1C37FABC05539CD112110102 436 | E2644B35053B69B200211256 437 | 1C37FABC04509CD000100104 438 | 1CC0EA4004350EF90044410B 439 | 1CC0EA4004350EF90041110B 440 | 441 | PBXProjectModuleGUID 442 | 11E0B1FE06471DED0097A5F4 443 | PBXProjectModuleLabel 444 | Files 445 | PBXProjectStructureProvided 446 | yes 447 | PBXSmartGroupTreeModuleColumnData 448 | 449 | PBXSmartGroupTreeModuleColumnWidthsKey 450 | 451 | 186 452 | 453 | PBXSmartGroupTreeModuleColumnsKey_v4 454 | 455 | MainColumn 456 | 457 | 458 | PBXSmartGroupTreeModuleOutlineStateKey_v7 459 | 460 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 461 | 462 | 29B97314FDCFA39411CA2CEA 463 | 1C37FABC05509CD000000102 464 | 465 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 466 | 467 | 468 | 0 469 | 470 | 471 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 472 | {{0, 0}, {186, 337}} 473 | 474 | PBXTopSmartGroupGIDs 475 | 476 | XCIncludePerspectivesSwitch 477 | 1 478 | XCSharingToken 479 | com.apple.Xcode.GFSharingToken 480 | 481 | GeometryConfiguration 482 | 483 | Frame 484 | {{0, 0}, {203, 355}} 485 | GroupTreeTableConfiguration 486 | 487 | MainColumn 488 | 186 489 | 490 | RubberWindowFrame 491 | 373 269 690 397 0 0 1440 878 492 | 493 | Module 494 | PBXSmartGroupTreeModule 495 | Proportion 496 | 100% 497 | 498 | 499 | Name 500 | Morph 501 | PreferredWidth 502 | 300 503 | ServiceClasses 504 | 505 | XCModuleDock 506 | PBXSmartGroupTreeModule 507 | 508 | TableOfContents 509 | 510 | 11E0B1FE06471DED0097A5F4 511 | 512 | ToolbarConfiguration 513 | xcode.toolbar.config.default.shortV3 514 | 515 | 516 | PerspectivesBarVisible 517 | 518 | ShelfIsVisible 519 | 520 | SourceDescription 521 | file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' 522 | StatusbarIsVisible 523 | 524 | TimeStamp 525 | 0.0 526 | ToolbarConfigUserDefaultsMinorVersion 527 | 2 528 | ToolbarDisplayMode 529 | 1 530 | ToolbarIsVisible 531 | 532 | ToolbarSizeMode 533 | 1 534 | Type 535 | Perspectives 536 | UpdateMessage 537 | The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? 538 | WindowJustification 539 | 5 540 | WindowOrderList 541 | 542 | 1C78EAAD065D492600B07095 543 | 1CD10A99069EF8BA00B06720 544 | F879B1DC12B31FA9006DE72A 545 | /Users/honcheng/Dropbox/Open Source Projects/SliderPageControl/SliderPageControlDemo/SliderPageControlDemo.xcodeproj 546 | 547 | WindowString 548 | -1179 230 1156 741 -1440 150 1440 900 549 | WindowToolsV3 550 | 551 | 552 | FirstTimeWindowDisplayed 553 | 554 | Identifier 555 | windowTool.build 556 | IsVertical 557 | 558 | Layout 559 | 560 | 561 | Dock 562 | 563 | 564 | ContentConfiguration 565 | 566 | PBXProjectModuleGUID 567 | 1CD0528F0623707200166675 568 | PBXProjectModuleLabel 569 | 570 | StatusBarVisibility 571 | 572 | 573 | GeometryConfiguration 574 | 575 | Frame 576 | {{0, 0}, {500, 218}} 577 | RubberWindowFrame 578 | 422 389 500 500 0 0 1680 1028 579 | 580 | Module 581 | PBXNavigatorGroup 582 | Proportion 583 | 218pt 584 | 585 | 586 | ContentConfiguration 587 | 588 | PBXProjectModuleGUID 589 | XCMainBuildResultsModuleGUID 590 | PBXProjectModuleLabel 591 | Build Results 592 | XCBuildResultsTrigger_Collapse 593 | 1021 594 | XCBuildResultsTrigger_Open 595 | 1011 596 | 597 | GeometryConfiguration 598 | 599 | Frame 600 | {{0, 223}, {500, 236}} 601 | RubberWindowFrame 602 | 422 389 500 500 0 0 1680 1028 603 | 604 | Module 605 | PBXBuildResultsModule 606 | Proportion 607 | 236pt 608 | 609 | 610 | Proportion 611 | 459pt 612 | 613 | 614 | Name 615 | Build Results 616 | ServiceClasses 617 | 618 | PBXBuildResultsModule 619 | 620 | StatusbarIsVisible 621 | 622 | TableOfContents 623 | 624 | F879B1DC12B31FA9006DE72A 625 | F82DE9AF12B3D17500976738 626 | 1CD0528F0623707200166675 627 | XCMainBuildResultsModuleGUID 628 | 629 | ToolbarConfiguration 630 | xcode.toolbar.config.buildV3 631 | WindowContentMinSize 632 | 486 300 633 | WindowString 634 | 422 389 500 500 0 0 1680 1028 635 | WindowToolGUID 636 | F879B1DC12B31FA9006DE72A 637 | WindowToolIsVisible 638 | 639 | 640 | 641 | FirstTimeWindowDisplayed 642 | 643 | Identifier 644 | windowTool.debugger 645 | IsVertical 646 | 647 | Layout 648 | 649 | 650 | Dock 651 | 652 | 653 | ContentConfiguration 654 | 655 | Debugger 656 | 657 | HorizontalSplitView 658 | 659 | _collapsingFrameDimension 660 | 0.0 661 | _indexOfCollapsedView 662 | 0 663 | _percentageOfCollapsedView 664 | 0.0 665 | isCollapsed 666 | yes 667 | sizes 668 | 669 | {{0, 0}, {316, 194}} 670 | {{316, 0}, {378, 194}} 671 | 672 | 673 | VerticalSplitView 674 | 675 | _collapsingFrameDimension 676 | 0.0 677 | _indexOfCollapsedView 678 | 0 679 | _percentageOfCollapsedView 680 | 0.0 681 | isCollapsed 682 | yes 683 | sizes 684 | 685 | {{0, 0}, {694, 194}} 686 | {{0, 194}, {694, 187}} 687 | 688 | 689 | 690 | LauncherConfigVersion 691 | 8 692 | PBXProjectModuleGUID 693 | 1C162984064C10D400B95A72 694 | PBXProjectModuleLabel 695 | Debug - GLUTExamples (Underwater) 696 | 697 | GeometryConfiguration 698 | 699 | DebugConsoleVisible 700 | None 701 | DebugConsoleWindowFrame 702 | {{200, 200}, {500, 300}} 703 | DebugSTDIOWindowFrame 704 | {{200, 200}, {500, 300}} 705 | Frame 706 | {{0, 0}, {694, 381}} 707 | PBXDebugSessionStackFrameViewKey 708 | 709 | DebugVariablesTableConfiguration 710 | 711 | Name 712 | 120 713 | Value 714 | 85 715 | Summary 716 | 148 717 | 718 | Frame 719 | {{316, 0}, {378, 194}} 720 | RubberWindowFrame 721 | 85 505 694 422 0 0 1680 1028 722 | 723 | RubberWindowFrame 724 | 85 505 694 422 0 0 1680 1028 725 | 726 | Module 727 | PBXDebugSessionModule 728 | Proportion 729 | 381pt 730 | 731 | 732 | Proportion 733 | 381pt 734 | 735 | 736 | Name 737 | Debugger 738 | ServiceClasses 739 | 740 | PBXDebugSessionModule 741 | 742 | StatusbarIsVisible 743 | 744 | TableOfContents 745 | 746 | 1CD10A99069EF8BA00B06720 747 | F82DE9B012B3D17500976738 748 | 1C162984064C10D400B95A72 749 | F82DE9B112B3D17500976738 750 | F82DE9B212B3D17500976738 751 | F82DE9B312B3D17500976738 752 | F82DE9B412B3D17500976738 753 | F82DE9B512B3D17500976738 754 | 755 | ToolbarConfiguration 756 | xcode.toolbar.config.debugV3 757 | WindowString 758 | 85 505 694 422 0 0 1680 1028 759 | WindowToolGUID 760 | 1CD10A99069EF8BA00B06720 761 | WindowToolIsVisible 762 | 763 | 764 | 765 | Identifier 766 | windowTool.find 767 | Layout 768 | 769 | 770 | Dock 771 | 772 | 773 | Dock 774 | 775 | 776 | ContentConfiguration 777 | 778 | PBXProjectModuleGUID 779 | 1CDD528C0622207200134675 780 | PBXProjectModuleLabel 781 | <No Editor> 782 | PBXSplitModuleInNavigatorKey 783 | 784 | Split0 785 | 786 | PBXProjectModuleGUID 787 | 1CD0528D0623707200166675 788 | 789 | SplitCount 790 | 1 791 | 792 | StatusBarVisibility 793 | 1 794 | 795 | GeometryConfiguration 796 | 797 | Frame 798 | {{0, 0}, {781, 167}} 799 | RubberWindowFrame 800 | 62 385 781 470 0 0 1440 878 801 | 802 | Module 803 | PBXNavigatorGroup 804 | Proportion 805 | 781pt 806 | 807 | 808 | Proportion 809 | 50% 810 | 811 | 812 | BecomeActive 813 | 1 814 | ContentConfiguration 815 | 816 | PBXProjectModuleGUID 817 | 1CD0528E0623707200166675 818 | PBXProjectModuleLabel 819 | Project Find 820 | 821 | GeometryConfiguration 822 | 823 | Frame 824 | {{8, 0}, {773, 254}} 825 | RubberWindowFrame 826 | 62 385 781 470 0 0 1440 878 827 | 828 | Module 829 | PBXProjectFindModule 830 | Proportion 831 | 50% 832 | 833 | 834 | Proportion 835 | 428pt 836 | 837 | 838 | Name 839 | Project Find 840 | ServiceClasses 841 | 842 | PBXProjectFindModule 843 | 844 | StatusbarIsVisible 845 | 1 846 | TableOfContents 847 | 848 | 1C530D57069F1CE1000CFCEE 849 | 1C530D58069F1CE1000CFCEE 850 | 1C530D59069F1CE1000CFCEE 851 | 1CDD528C0622207200134675 852 | 1C530D5A069F1CE1000CFCEE 853 | 1CE0B1FE06471DED0097A5F4 854 | 1CD0528E0623707200166675 855 | 856 | WindowString 857 | 62 385 781 470 0 0 1440 878 858 | WindowToolGUID 859 | 1C530D57069F1CE1000CFCEE 860 | WindowToolIsVisible 861 | 0 862 | 863 | 864 | Identifier 865 | MENUSEPARATOR 866 | 867 | 868 | FirstTimeWindowDisplayed 869 | 870 | Identifier 871 | windowTool.debuggerConsole 872 | IsVertical 873 | 874 | Layout 875 | 876 | 877 | Dock 878 | 879 | 880 | ContentConfiguration 881 | 882 | PBXProjectModuleGUID 883 | 1C78EAAC065D492600B07095 884 | PBXProjectModuleLabel 885 | Debugger Console 886 | 887 | GeometryConfiguration 888 | 889 | Frame 890 | {{0, 0}, {650, 209}} 891 | RubberWindowFrame 892 | 83 698 650 250 0 0 1680 1028 893 | 894 | Module 895 | PBXDebugCLIModule 896 | Proportion 897 | 209pt 898 | 899 | 900 | Proportion 901 | 209pt 902 | 903 | 904 | Name 905 | Debugger Console 906 | ServiceClasses 907 | 908 | PBXDebugCLIModule 909 | 910 | StatusbarIsVisible 911 | 912 | TableOfContents 913 | 914 | 1C78EAAD065D492600B07095 915 | F82DE9B612B3D17500976738 916 | 1C78EAAC065D492600B07095 917 | 918 | ToolbarConfiguration 919 | xcode.toolbar.config.consoleV3 920 | WindowString 921 | 83 698 650 250 0 0 1680 1028 922 | WindowToolGUID 923 | 1C78EAAD065D492600B07095 924 | WindowToolIsVisible 925 | 926 | 927 | 928 | Identifier 929 | windowTool.snapshots 930 | Layout 931 | 932 | 933 | Dock 934 | 935 | 936 | Module 937 | XCSnapshotModule 938 | Proportion 939 | 100% 940 | 941 | 942 | Proportion 943 | 100% 944 | 945 | 946 | Name 947 | Snapshots 948 | ServiceClasses 949 | 950 | XCSnapshotModule 951 | 952 | StatusbarIsVisible 953 | Yes 954 | ToolbarConfiguration 955 | xcode.toolbar.config.snapshots 956 | WindowString 957 | 315 824 300 550 0 0 1440 878 958 | WindowToolIsVisible 959 | Yes 960 | 961 | 962 | Identifier 963 | windowTool.scm 964 | Layout 965 | 966 | 967 | Dock 968 | 969 | 970 | ContentConfiguration 971 | 972 | PBXProjectModuleGUID 973 | 1C78EAB2065D492600B07095 974 | PBXProjectModuleLabel 975 | <No Editor> 976 | PBXSplitModuleInNavigatorKey 977 | 978 | Split0 979 | 980 | PBXProjectModuleGUID 981 | 1C78EAB3065D492600B07095 982 | 983 | SplitCount 984 | 1 985 | 986 | StatusBarVisibility 987 | 1 988 | 989 | GeometryConfiguration 990 | 991 | Frame 992 | {{0, 0}, {452, 0}} 993 | RubberWindowFrame 994 | 743 379 452 308 0 0 1280 1002 995 | 996 | Module 997 | PBXNavigatorGroup 998 | Proportion 999 | 0pt 1000 | 1001 | 1002 | BecomeActive 1003 | 1 1004 | ContentConfiguration 1005 | 1006 | PBXProjectModuleGUID 1007 | 1CD052920623707200166675 1008 | PBXProjectModuleLabel 1009 | SCM 1010 | 1011 | GeometryConfiguration 1012 | 1013 | ConsoleFrame 1014 | {{0, 259}, {452, 0}} 1015 | Frame 1016 | {{0, 7}, {452, 259}} 1017 | RubberWindowFrame 1018 | 743 379 452 308 0 0 1280 1002 1019 | TableConfiguration 1020 | 1021 | Status 1022 | 30 1023 | FileName 1024 | 199 1025 | Path 1026 | 197.0950012207031 1027 | 1028 | TableFrame 1029 | {{0, 0}, {452, 250}} 1030 | 1031 | Module 1032 | PBXCVSModule 1033 | Proportion 1034 | 262pt 1035 | 1036 | 1037 | Proportion 1038 | 266pt 1039 | 1040 | 1041 | Name 1042 | SCM 1043 | ServiceClasses 1044 | 1045 | PBXCVSModule 1046 | 1047 | StatusbarIsVisible 1048 | 1 1049 | TableOfContents 1050 | 1051 | 1C78EAB4065D492600B07095 1052 | 1C78EAB5065D492600B07095 1053 | 1C78EAB2065D492600B07095 1054 | 1CD052920623707200166675 1055 | 1056 | ToolbarConfiguration 1057 | xcode.toolbar.config.scm 1058 | WindowString 1059 | 743 379 452 308 0 0 1280 1002 1060 | 1061 | 1062 | Identifier 1063 | windowTool.breakpoints 1064 | IsVertical 1065 | 0 1066 | Layout 1067 | 1068 | 1069 | Dock 1070 | 1071 | 1072 | BecomeActive 1073 | 1 1074 | ContentConfiguration 1075 | 1076 | PBXBottomSmartGroupGIDs 1077 | 1078 | 1C77FABC04509CD000000102 1079 | 1080 | PBXProjectModuleGUID 1081 | 1CE0B1FE06471DED0097A5F4 1082 | PBXProjectModuleLabel 1083 | Files 1084 | PBXProjectStructureProvided 1085 | no 1086 | PBXSmartGroupTreeModuleColumnData 1087 | 1088 | PBXSmartGroupTreeModuleColumnWidthsKey 1089 | 1090 | 168 1091 | 1092 | PBXSmartGroupTreeModuleColumnsKey_v4 1093 | 1094 | MainColumn 1095 | 1096 | 1097 | PBXSmartGroupTreeModuleOutlineStateKey_v7 1098 | 1099 | PBXSmartGroupTreeModuleOutlineStateExpansionKey 1100 | 1101 | 1C77FABC04509CD000000102 1102 | 1103 | PBXSmartGroupTreeModuleOutlineStateSelectionKey 1104 | 1105 | 1106 | 0 1107 | 1108 | 1109 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey 1110 | {{0, 0}, {168, 350}} 1111 | 1112 | PBXTopSmartGroupGIDs 1113 | 1114 | XCIncludePerspectivesSwitch 1115 | 0 1116 | 1117 | GeometryConfiguration 1118 | 1119 | Frame 1120 | {{0, 0}, {185, 368}} 1121 | GroupTreeTableConfiguration 1122 | 1123 | MainColumn 1124 | 168 1125 | 1126 | RubberWindowFrame 1127 | 315 424 744 409 0 0 1440 878 1128 | 1129 | Module 1130 | PBXSmartGroupTreeModule 1131 | Proportion 1132 | 185pt 1133 | 1134 | 1135 | ContentConfiguration 1136 | 1137 | PBXProjectModuleGUID 1138 | 1CA1AED706398EBD00589147 1139 | PBXProjectModuleLabel 1140 | Detail 1141 | 1142 | GeometryConfiguration 1143 | 1144 | Frame 1145 | {{190, 0}, {554, 368}} 1146 | RubberWindowFrame 1147 | 315 424 744 409 0 0 1440 878 1148 | 1149 | Module 1150 | XCDetailModule 1151 | Proportion 1152 | 554pt 1153 | 1154 | 1155 | Proportion 1156 | 368pt 1157 | 1158 | 1159 | MajorVersion 1160 | 3 1161 | MinorVersion 1162 | 0 1163 | Name 1164 | Breakpoints 1165 | ServiceClasses 1166 | 1167 | PBXSmartGroupTreeModule 1168 | XCDetailModule 1169 | 1170 | StatusbarIsVisible 1171 | 1 1172 | TableOfContents 1173 | 1174 | 1CDDB66807F98D9800BB5817 1175 | 1CDDB66907F98D9800BB5817 1176 | 1CE0B1FE06471DED0097A5F4 1177 | 1CA1AED706398EBD00589147 1178 | 1179 | ToolbarConfiguration 1180 | xcode.toolbar.config.breakpointsV3 1181 | WindowString 1182 | 315 424 744 409 0 0 1440 878 1183 | WindowToolGUID 1184 | 1CDDB66807F98D9800BB5817 1185 | WindowToolIsVisible 1186 | 1 1187 | 1188 | 1189 | Identifier 1190 | windowTool.debugAnimator 1191 | Layout 1192 | 1193 | 1194 | Dock 1195 | 1196 | 1197 | Module 1198 | PBXNavigatorGroup 1199 | Proportion 1200 | 100% 1201 | 1202 | 1203 | Proportion 1204 | 100% 1205 | 1206 | 1207 | Name 1208 | Debug Visualizer 1209 | ServiceClasses 1210 | 1211 | PBXNavigatorGroup 1212 | 1213 | StatusbarIsVisible 1214 | 1 1215 | ToolbarConfiguration 1216 | xcode.toolbar.config.debugAnimatorV3 1217 | WindowString 1218 | 100 100 700 500 0 0 1280 1002 1219 | 1220 | 1221 | Identifier 1222 | windowTool.bookmarks 1223 | Layout 1224 | 1225 | 1226 | Dock 1227 | 1228 | 1229 | Module 1230 | PBXBookmarksModule 1231 | Proportion 1232 | 100% 1233 | 1234 | 1235 | Proportion 1236 | 100% 1237 | 1238 | 1239 | Name 1240 | Bookmarks 1241 | ServiceClasses 1242 | 1243 | PBXBookmarksModule 1244 | 1245 | StatusbarIsVisible 1246 | 0 1247 | WindowString 1248 | 538 42 401 187 0 0 1280 1002 1249 | 1250 | 1251 | Identifier 1252 | windowTool.projectFormatConflicts 1253 | Layout 1254 | 1255 | 1256 | Dock 1257 | 1258 | 1259 | Module 1260 | XCProjectFormatConflictsModule 1261 | Proportion 1262 | 100% 1263 | 1264 | 1265 | Proportion 1266 | 100% 1267 | 1268 | 1269 | Name 1270 | Project Format Conflicts 1271 | ServiceClasses 1272 | 1273 | XCProjectFormatConflictsModule 1274 | 1275 | StatusbarIsVisible 1276 | 0 1277 | WindowContentMinSize 1278 | 450 300 1279 | WindowString 1280 | 50 850 472 307 0 0 1440 877 1281 | 1282 | 1283 | Identifier 1284 | windowTool.classBrowser 1285 | Layout 1286 | 1287 | 1288 | Dock 1289 | 1290 | 1291 | BecomeActive 1292 | 1 1293 | ContentConfiguration 1294 | 1295 | OptionsSetName 1296 | Hierarchy, all classes 1297 | PBXProjectModuleGUID 1298 | 1CA6456E063B45B4001379D8 1299 | PBXProjectModuleLabel 1300 | Class Browser - NSObject 1301 | 1302 | GeometryConfiguration 1303 | 1304 | ClassesFrame 1305 | {{0, 0}, {374, 96}} 1306 | ClassesTreeTableConfiguration 1307 | 1308 | PBXClassNameColumnIdentifier 1309 | 208 1310 | PBXClassBookColumnIdentifier 1311 | 22 1312 | 1313 | Frame 1314 | {{0, 0}, {630, 331}} 1315 | MembersFrame 1316 | {{0, 105}, {374, 395}} 1317 | MembersTreeTableConfiguration 1318 | 1319 | PBXMemberTypeIconColumnIdentifier 1320 | 22 1321 | PBXMemberNameColumnIdentifier 1322 | 216 1323 | PBXMemberTypeColumnIdentifier 1324 | 97 1325 | PBXMemberBookColumnIdentifier 1326 | 22 1327 | 1328 | PBXModuleWindowStatusBarHidden2 1329 | 1 1330 | RubberWindowFrame 1331 | 385 179 630 352 0 0 1440 878 1332 | 1333 | Module 1334 | PBXClassBrowserModule 1335 | Proportion 1336 | 332pt 1337 | 1338 | 1339 | Proportion 1340 | 332pt 1341 | 1342 | 1343 | Name 1344 | Class Browser 1345 | ServiceClasses 1346 | 1347 | PBXClassBrowserModule 1348 | 1349 | StatusbarIsVisible 1350 | 0 1351 | TableOfContents 1352 | 1353 | 1C0AD2AF069F1E9B00FABCE6 1354 | 1C0AD2B0069F1E9B00FABCE6 1355 | 1CA6456E063B45B4001379D8 1356 | 1357 | ToolbarConfiguration 1358 | xcode.toolbar.config.classbrowser 1359 | WindowString 1360 | 385 179 630 352 0 0 1440 878 1361 | WindowToolGUID 1362 | 1C0AD2AF069F1E9B00FABCE6 1363 | WindowToolIsVisible 1364 | 0 1365 | 1366 | 1367 | Identifier 1368 | windowTool.refactoring 1369 | IncludeInToolsMenu 1370 | 0 1371 | Layout 1372 | 1373 | 1374 | Dock 1375 | 1376 | 1377 | BecomeActive 1378 | 1 1379 | GeometryConfiguration 1380 | 1381 | Frame 1382 | {0, 0}, {500, 335} 1383 | RubberWindowFrame 1384 | {0, 0}, {500, 335} 1385 | 1386 | Module 1387 | XCRefactoringModule 1388 | Proportion 1389 | 100% 1390 | 1391 | 1392 | Proportion 1393 | 100% 1394 | 1395 | 1396 | Name 1397 | Refactoring 1398 | ServiceClasses 1399 | 1400 | XCRefactoringModule 1401 | 1402 | WindowString 1403 | 200 200 500 356 0 0 1920 1200 1404 | 1405 | 1406 | 1407 | 1408 | -------------------------------------------------------------------------------- /SliderPageControlDemo/SliderPageControlDemo.xcodeproj/honcheng.pbxuser: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | 1D3623240D0F684500981E51 /* SliderPageControlDemoAppDelegate.h */ = { 4 | uiCtxt = { 5 | sepNavIntBoundsRect = "{{0, 0}, {645, 572}}"; 6 | sepNavSelRange = "{1290, 0}"; 7 | sepNavVisRange = "{0, 1420}"; 8 | }; 9 | }; 10 | 1D3623250D0F684500981E51 /* SliderPageControlDemoAppDelegate.m */ = { 11 | uiCtxt = { 12 | sepNavIntBoundsRect = "{{0, 0}, {1965, 1313}}"; 13 | sepNavSelRange = "{1290, 0}"; 14 | sepNavVisRange = "{1283, 1802}"; 15 | }; 16 | }; 17 | 1D6058900D05DD3D006BFB54 /* SliderPageControlDemo */ = { 18 | activeExec = 0; 19 | executables = ( 20 | F879B1CF12B31FA0006DE72A /* SliderPageControlDemo */, 21 | ); 22 | }; 23 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 24 | activeBuildConfigurationName = Debug; 25 | activeExecutable = F879B1CF12B31FA0006DE72A /* SliderPageControlDemo */; 26 | activeTarget = 1D6058900D05DD3D006BFB54 /* SliderPageControlDemo */; 27 | addToTargets = ( 28 | 1D6058900D05DD3D006BFB54 /* SliderPageControlDemo */, 29 | ); 30 | codeSenseManager = F879B1DF12B31FA9006DE72A /* Code sense */; 31 | executables = ( 32 | F879B1CF12B31FA0006DE72A /* SliderPageControlDemo */, 33 | ); 34 | perUserDictionary = { 35 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { 36 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 37 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 38 | PBXFileTableDataSourceColumnWidthsKey = ( 39 | 20, 40 | 652, 41 | 20, 42 | 48, 43 | 43, 44 | 43, 45 | 20, 46 | ); 47 | PBXFileTableDataSourceColumnsKey = ( 48 | PBXFileDataSource_FiletypeID, 49 | PBXFileDataSource_Filename_ColumnID, 50 | PBXFileDataSource_Built_ColumnID, 51 | PBXFileDataSource_ObjectSize_ColumnID, 52 | PBXFileDataSource_Errors_ColumnID, 53 | PBXFileDataSource_Warnings_ColumnID, 54 | PBXFileDataSource_Target_ColumnID, 55 | ); 56 | }; 57 | PBXPerProjectTemplateStateSaveDate = 313774371; 58 | PBXWorkspaceStateSaveDate = 313774371; 59 | }; 60 | perUserProjectItems = { 61 | F82DE9A812B3D17500976738 /* PlistBookmark */ = F82DE9A812B3D17500976738 /* PlistBookmark */; 62 | F82DE9A912B3D17500976738 /* PBXTextBookmark */ = F82DE9A912B3D17500976738 /* PBXTextBookmark */; 63 | F82DE9AA12B3D17500976738 /* PBXTextBookmark */ = F82DE9AA12B3D17500976738 /* PBXTextBookmark */; 64 | F82DE9AB12B3D17500976738 /* PBXTextBookmark */ = F82DE9AB12B3D17500976738 /* PBXTextBookmark */; 65 | F82DE9AC12B3D17500976738 /* PBXTextBookmark */ = F82DE9AC12B3D17500976738 /* PBXTextBookmark */; 66 | F879B21012B32328006DE72A /* PBXTextBookmark */ = F879B21012B32328006DE72A /* PBXTextBookmark */; 67 | F879B22312B32526006DE72A /* PBXTextBookmark */ = F879B22312B32526006DE72A /* PBXTextBookmark */; 68 | F879B26812B32843006DE72A /* PBXTextBookmark */ = F879B26812B32843006DE72A /* PBXTextBookmark */; 69 | F879B26B12B32843006DE72A /* PBXTextBookmark */ = F879B26B12B32843006DE72A /* PBXTextBookmark */; 70 | }; 71 | sourceControlManager = F879B1DE12B31FA9006DE72A /* Source Control */; 72 | userBuildSettings = { 73 | }; 74 | }; 75 | F82DE9A812B3D17500976738 /* PlistBookmark */ = { 76 | isa = PlistBookmark; 77 | fRef = 8D1107310486CEB800E47090 /* SliderPageControlDemo-Info.plist */; 78 | fallbackIsa = PBXBookmark; 79 | isK = 0; 80 | kPath = ( 81 | ); 82 | name = "/Users/honcheng/Dropbox/Open Source Projects/SliderPageControl/SliderPageControlDemo/SliderPageControlDemo-Info.plist"; 83 | rLen = 0; 84 | rLoc = 9223372036854775807; 85 | }; 86 | F82DE9A912B3D17500976738 /* PBXTextBookmark */ = { 87 | isa = PBXTextBookmark; 88 | fRef = 1D3623250D0F684500981E51 /* SliderPageControlDemoAppDelegate.m */; 89 | name = "SliderPageControlDemoAppDelegate.m: 32"; 90 | rLen = 0; 91 | rLoc = 1290; 92 | rType = 0; 93 | vrLen = 1802; 94 | vrLoc = 1283; 95 | }; 96 | F82DE9AA12B3D17500976738 /* PBXTextBookmark */ = { 97 | isa = PBXTextBookmark; 98 | fRef = F879B1EA12B32016006DE72A /* SliderPageControlDemoViewController.m */; 99 | name = "SliderPageControlDemoViewController.m: 85"; 100 | rLen = 0; 101 | rLoc = 3712; 102 | rType = 0; 103 | vrLen = 2454; 104 | vrLoc = 1933; 105 | }; 106 | F82DE9AB12B3D17500976738 /* PBXTextBookmark */ = { 107 | isa = PBXTextBookmark; 108 | fRef = F879B20712B322AE006DE72A /* SliderPageControl.m */; 109 | name = "SliderPageControl.m: 39"; 110 | rLen = 0; 111 | rLoc = 1415; 112 | rType = 0; 113 | vrLen = 1669; 114 | vrLoc = 544; 115 | }; 116 | F82DE9AC12B3D17500976738 /* PBXTextBookmark */ = { 117 | isa = PBXTextBookmark; 118 | fRef = F879B20712B322AE006DE72A /* SliderPageControl.m */; 119 | name = "SliderPageControl.m: 64"; 120 | rLen = 0; 121 | rLoc = 2507; 122 | rType = 0; 123 | vrLen = 1627; 124 | vrLoc = 1385; 125 | }; 126 | F879B1CF12B31FA0006DE72A /* SliderPageControlDemo */ = { 127 | isa = PBXExecutable; 128 | activeArgIndices = ( 129 | ); 130 | argumentStrings = ( 131 | ); 132 | autoAttachOnCrash = 1; 133 | breakpointsEnabled = 0; 134 | configStateDict = { 135 | }; 136 | customDataFormattersEnabled = 1; 137 | dataTipCustomDataFormattersEnabled = 1; 138 | dataTipShowTypeColumn = 1; 139 | dataTipSortType = 0; 140 | debuggerPlugin = GDBDebugging; 141 | disassemblyDisplayState = 0; 142 | dylibVariantSuffix = ""; 143 | enableDebugStr = 1; 144 | environmentEntries = ( 145 | ); 146 | executableSystemSymbolLevel = 0; 147 | executableUserSymbolLevel = 0; 148 | libgmallocEnabled = 0; 149 | name = SliderPageControlDemo; 150 | showTypeColumn = 0; 151 | sourceDirectories = ( 152 | ); 153 | }; 154 | F879B1DE12B31FA9006DE72A /* Source Control */ = { 155 | isa = PBXSourceControlManager; 156 | fallbackIsa = XCSourceControlManager; 157 | isSCMEnabled = 0; 158 | scmConfiguration = { 159 | repositoryNamesForRoots = { 160 | "" = ""; 161 | }; 162 | }; 163 | }; 164 | F879B1DF12B31FA9006DE72A /* Code sense */ = { 165 | isa = PBXCodeSenseManager; 166 | indexTemplatePath = ""; 167 | }; 168 | F879B1E912B32016006DE72A /* SliderPageControlDemoViewController.h */ = { 169 | uiCtxt = { 170 | sepNavIntBoundsRect = "{{0, 0}, {824, 663}}"; 171 | sepNavSelRange = "{1867, 0}"; 172 | sepNavVisRange = "{774, 1100}"; 173 | }; 174 | }; 175 | F879B1EA12B32016006DE72A /* SliderPageControlDemoViewController.m */ = { 176 | uiCtxt = { 177 | sepNavIntBoundsRect = "{{0, 0}, {1230, 2041}}"; 178 | sepNavSelRange = "{3712, 0}"; 179 | sepNavVisRange = "{1933, 2454}"; 180 | }; 181 | }; 182 | F879B20612B322AE006DE72A /* SliderPageControl.h */ = { 183 | uiCtxt = { 184 | sepNavIntBoundsRect = "{{0, 0}, {645, 858}}"; 185 | sepNavSelRange = "{1996, 0}"; 186 | sepNavVisRange = "{1271, 854}"; 187 | }; 188 | }; 189 | F879B20712B322AE006DE72A /* SliderPageControl.m */ = { 190 | uiCtxt = { 191 | sepNavIntBoundsRect = "{{0, 0}, {1188, 4043}}"; 192 | sepNavSelRange = "{2507, 0}"; 193 | sepNavVisRange = "{1385, 1627}"; 194 | }; 195 | }; 196 | F879B21012B32328006DE72A /* PBXTextBookmark */ = { 197 | isa = PBXTextBookmark; 198 | fRef = 1D3623240D0F684500981E51 /* SliderPageControlDemoAppDelegate.h */; 199 | name = "SliderPageControlDemoAppDelegate.h: 32"; 200 | rLen = 0; 201 | rLoc = 1290; 202 | rType = 0; 203 | vrLen = 1420; 204 | vrLoc = 0; 205 | }; 206 | F879B22312B32526006DE72A /* PBXTextBookmark */ = { 207 | isa = PBXTextBookmark; 208 | fRef = F879B22412B32526006DE72A /* FBLoginButton.m */; 209 | name = "FBLoginButton.m: 31"; 210 | rLen = 16; 211 | rLoc = 1045; 212 | rType = 0; 213 | vrLen = 1349; 214 | vrLoc = 0; 215 | }; 216 | F879B22412B32526006DE72A /* FBLoginButton.m */ = { 217 | isa = PBXFileReference; 218 | lastKnownFileType = sourcecode.c.objc; 219 | name = FBLoginButton.m; 220 | path = /Users/honcheng/iphone/coding/myOfficialAppWithSVN/PaperClip/GReader/Classes/FBConnect/src/FBLoginButton.m; 221 | sourceTree = ""; 222 | }; 223 | F879B26812B32843006DE72A /* PBXTextBookmark */ = { 224 | isa = PBXTextBookmark; 225 | fRef = F879B1E912B32016006DE72A /* SliderPageControlDemoViewController.h */; 226 | name = "SliderPageControlDemoViewController.h: 48"; 227 | rLen = 0; 228 | rLoc = 1867; 229 | rType = 0; 230 | vrLen = 1100; 231 | vrLoc = 774; 232 | }; 233 | F879B26B12B32843006DE72A /* PBXTextBookmark */ = { 234 | isa = PBXTextBookmark; 235 | fRef = F879B20612B322AE006DE72A /* SliderPageControl.h */; 236 | name = "SliderPageControl.h: 60"; 237 | rLen = 0; 238 | rLoc = 1996; 239 | rType = 0; 240 | vrLen = 854; 241 | vrLoc = 1271; 242 | }; 243 | } 244 | -------------------------------------------------------------------------------- /SliderPageControlDemo/SliderPageControlDemo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 45; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1D3623260D0F684500981E51 /* SliderPageControlDemoAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* SliderPageControlDemoAppDelegate.m */; }; 11 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 12 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 13 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 14 | 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; 15 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 16 | F879B1EB12B32016006DE72A /* SliderPageControlDemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F879B1EA12B32016006DE72A /* SliderPageControlDemoViewController.m */; }; 17 | F879B20812B322AE006DE72A /* SliderPageControl.m in Sources */ = {isa = PBXBuildFile; fileRef = F879B20712B322AE006DE72A /* SliderPageControl.m */; }; 18 | F879B21512B32431006DE72A /* SliderPageControl.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F879B21412B32431006DE72A /* SliderPageControl.bundle */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXFileReference section */ 22 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 23 | 1D3623240D0F684500981E51 /* SliderPageControlDemoAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderPageControlDemoAppDelegate.h; sourceTree = ""; }; 24 | 1D3623250D0F684500981E51 /* SliderPageControlDemoAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SliderPageControlDemoAppDelegate.m; sourceTree = ""; }; 25 | 1D6058910D05DD3D006BFB54 /* SliderPageControlDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SliderPageControlDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 26 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 27 | 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 28 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 29 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 30 | 32CA4F630368D1EE00C91783 /* SliderPageControlDemo_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderPageControlDemo_Prefix.pch; sourceTree = ""; }; 31 | 8D1107310486CEB800E47090 /* SliderPageControlDemo-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "SliderPageControlDemo-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 32 | F879B1E912B32016006DE72A /* SliderPageControlDemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderPageControlDemoViewController.h; sourceTree = ""; }; 33 | F879B1EA12B32016006DE72A /* SliderPageControlDemoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SliderPageControlDemoViewController.m; sourceTree = ""; }; 34 | F879B20612B322AE006DE72A /* SliderPageControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SliderPageControl.h; path = ../SliderPageControl/SliderPageControl.h; sourceTree = SOURCE_ROOT; }; 35 | F879B20712B322AE006DE72A /* SliderPageControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SliderPageControl.m; path = ../SliderPageControl/SliderPageControl.m; sourceTree = SOURCE_ROOT; }; 36 | F879B21412B32431006DE72A /* SliderPageControl.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = SliderPageControl.bundle; path = ../SliderPageControl/SliderPageControl.bundle; sourceTree = SOURCE_ROOT; }; 37 | /* End PBXFileReference section */ 38 | 39 | /* Begin PBXFrameworksBuildPhase section */ 40 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 41 | isa = PBXFrameworksBuildPhase; 42 | buildActionMask = 2147483647; 43 | files = ( 44 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 45 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 46 | 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, 47 | ); 48 | runOnlyForDeploymentPostprocessing = 0; 49 | }; 50 | /* End PBXFrameworksBuildPhase section */ 51 | 52 | /* Begin PBXGroup section */ 53 | 080E96DDFE201D6D7F000001 /* Classes */ = { 54 | isa = PBXGroup; 55 | children = ( 56 | 1D3623240D0F684500981E51 /* SliderPageControlDemoAppDelegate.h */, 57 | 1D3623250D0F684500981E51 /* SliderPageControlDemoAppDelegate.m */, 58 | F879B1E912B32016006DE72A /* SliderPageControlDemoViewController.h */, 59 | F879B1EA12B32016006DE72A /* SliderPageControlDemoViewController.m */, 60 | ); 61 | path = Classes; 62 | sourceTree = ""; 63 | }; 64 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 65 | isa = PBXGroup; 66 | children = ( 67 | 1D6058910D05DD3D006BFB54 /* SliderPageControlDemo.app */, 68 | ); 69 | name = Products; 70 | sourceTree = ""; 71 | }; 72 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | F879B1F812B3229F006DE72A /* SliderPageControl */, 76 | 080E96DDFE201D6D7F000001 /* Classes */, 77 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 78 | 29B97317FDCFA39411CA2CEA /* Resources */, 79 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 80 | 19C28FACFE9D520D11CA2CBB /* Products */, 81 | ); 82 | name = CustomTemplate; 83 | sourceTree = ""; 84 | }; 85 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 32CA4F630368D1EE00C91783 /* SliderPageControlDemo_Prefix.pch */, 89 | 29B97316FDCFA39411CA2CEA /* main.m */, 90 | ); 91 | name = "Other Sources"; 92 | sourceTree = ""; 93 | }; 94 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 95 | isa = PBXGroup; 96 | children = ( 97 | F879B21412B32431006DE72A /* SliderPageControl.bundle */, 98 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */, 99 | 8D1107310486CEB800E47090 /* SliderPageControlDemo-Info.plist */, 100 | ); 101 | name = Resources; 102 | sourceTree = ""; 103 | }; 104 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 108 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 109 | 288765FC0DF74451002DB57D /* CoreGraphics.framework */, 110 | ); 111 | name = Frameworks; 112 | sourceTree = ""; 113 | }; 114 | F879B1F812B3229F006DE72A /* SliderPageControl */ = { 115 | isa = PBXGroup; 116 | children = ( 117 | F879B20612B322AE006DE72A /* SliderPageControl.h */, 118 | F879B20712B322AE006DE72A /* SliderPageControl.m */, 119 | ); 120 | name = SliderPageControl; 121 | sourceTree = ""; 122 | }; 123 | /* End PBXGroup section */ 124 | 125 | /* Begin PBXNativeTarget section */ 126 | 1D6058900D05DD3D006BFB54 /* SliderPageControlDemo */ = { 127 | isa = PBXNativeTarget; 128 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "SliderPageControlDemo" */; 129 | buildPhases = ( 130 | 1D60588D0D05DD3D006BFB54 /* Resources */, 131 | 1D60588E0D05DD3D006BFB54 /* Sources */, 132 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 133 | ); 134 | buildRules = ( 135 | ); 136 | dependencies = ( 137 | ); 138 | name = SliderPageControlDemo; 139 | productName = SliderPageControlDemo; 140 | productReference = 1D6058910D05DD3D006BFB54 /* SliderPageControlDemo.app */; 141 | productType = "com.apple.product-type.application"; 142 | }; 143 | /* End PBXNativeTarget section */ 144 | 145 | /* Begin PBXProject section */ 146 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 147 | isa = PBXProject; 148 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SliderPageControlDemo" */; 149 | compatibilityVersion = "Xcode 3.1"; 150 | developmentRegion = English; 151 | hasScannedForEncodings = 1; 152 | knownRegions = ( 153 | English, 154 | Japanese, 155 | French, 156 | German, 157 | ); 158 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 159 | projectDirPath = ""; 160 | projectRoot = ""; 161 | targets = ( 162 | 1D6058900D05DD3D006BFB54 /* SliderPageControlDemo */, 163 | ); 164 | }; 165 | /* End PBXProject section */ 166 | 167 | /* Begin PBXResourcesBuildPhase section */ 168 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 169 | isa = PBXResourcesBuildPhase; 170 | buildActionMask = 2147483647; 171 | files = ( 172 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, 173 | F879B21512B32431006DE72A /* SliderPageControl.bundle in Resources */, 174 | ); 175 | runOnlyForDeploymentPostprocessing = 0; 176 | }; 177 | /* End PBXResourcesBuildPhase section */ 178 | 179 | /* Begin PBXSourcesBuildPhase section */ 180 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 181 | isa = PBXSourcesBuildPhase; 182 | buildActionMask = 2147483647; 183 | files = ( 184 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 185 | 1D3623260D0F684500981E51 /* SliderPageControlDemoAppDelegate.m in Sources */, 186 | F879B1EB12B32016006DE72A /* SliderPageControlDemoViewController.m in Sources */, 187 | F879B20812B322AE006DE72A /* SliderPageControl.m in Sources */, 188 | ); 189 | runOnlyForDeploymentPostprocessing = 0; 190 | }; 191 | /* End PBXSourcesBuildPhase section */ 192 | 193 | /* Begin XCBuildConfiguration section */ 194 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 195 | isa = XCBuildConfiguration; 196 | buildSettings = { 197 | ALWAYS_SEARCH_USER_PATHS = NO; 198 | CLANG_ENABLE_OBJC_ARC = YES; 199 | COPY_PHASE_STRIP = NO; 200 | GCC_DYNAMIC_NO_PIC = NO; 201 | GCC_OPTIMIZATION_LEVEL = 0; 202 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 203 | GCC_PREFIX_HEADER = SliderPageControlDemo_Prefix.pch; 204 | INFOPLIST_FILE = "SliderPageControlDemo-Info.plist"; 205 | PRODUCT_NAME = SliderPageControlDemo; 206 | RUN_CLANG_STATIC_ANALYZER = YES; 207 | }; 208 | name = Debug; 209 | }; 210 | 1D6058950D05DD3E006BFB54 /* Release */ = { 211 | isa = XCBuildConfiguration; 212 | buildSettings = { 213 | ALWAYS_SEARCH_USER_PATHS = NO; 214 | CLANG_ENABLE_OBJC_ARC = YES; 215 | COPY_PHASE_STRIP = YES; 216 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 217 | GCC_PREFIX_HEADER = SliderPageControlDemo_Prefix.pch; 218 | INFOPLIST_FILE = "SliderPageControlDemo-Info.plist"; 219 | PRODUCT_NAME = SliderPageControlDemo; 220 | RUN_CLANG_STATIC_ANALYZER = NO; 221 | VALIDATE_PRODUCT = YES; 222 | }; 223 | name = Release; 224 | }; 225 | C01FCF4F08A954540054247B /* Debug */ = { 226 | isa = XCBuildConfiguration; 227 | buildSettings = { 228 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 229 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 230 | GCC_C_LANGUAGE_STANDARD = c99; 231 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 232 | GCC_WARN_UNUSED_VARIABLE = YES; 233 | PREBINDING = NO; 234 | SDKROOT = iphoneos; 235 | }; 236 | name = Debug; 237 | }; 238 | C01FCF5008A954540054247B /* Release */ = { 239 | isa = XCBuildConfiguration; 240 | buildSettings = { 241 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 242 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 243 | GCC_C_LANGUAGE_STANDARD = c99; 244 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 245 | GCC_WARN_UNUSED_VARIABLE = YES; 246 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 247 | PREBINDING = NO; 248 | SDKROOT = iphoneos; 249 | }; 250 | name = Release; 251 | }; 252 | /* End XCBuildConfiguration section */ 253 | 254 | /* Begin XCConfigurationList section */ 255 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "SliderPageControlDemo" */ = { 256 | isa = XCConfigurationList; 257 | buildConfigurations = ( 258 | 1D6058940D05DD3E006BFB54 /* Debug */, 259 | 1D6058950D05DD3E006BFB54 /* Release */, 260 | ); 261 | defaultConfigurationIsVisible = 0; 262 | defaultConfigurationName = Release; 263 | }; 264 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SliderPageControlDemo" */ = { 265 | isa = XCConfigurationList; 266 | buildConfigurations = ( 267 | C01FCF4F08A954540054247B /* Debug */, 268 | C01FCF5008A954540054247B /* Release */, 269 | ); 270 | defaultConfigurationIsVisible = 0; 271 | defaultConfigurationName = Release; 272 | }; 273 | /* End XCConfigurationList section */ 274 | }; 275 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 276 | } 277 | -------------------------------------------------------------------------------- /SliderPageControlDemo/SliderPageControlDemo_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'SliderPageControlDemo' target in the 'SliderPageControlDemo' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import 8 | #endif 9 | -------------------------------------------------------------------------------- /SliderPageControlDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SliderPageControlDemo 4 | // 5 | // Created by honcheng on 12/11/10. 6 | // Copyright 2010 honcheng. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | @autoreleasepool { 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | return retVal; 16 | } 17 | } 18 | --------------------------------------------------------------------------------