PhotoStackViewController.m 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // PhotoStackViewController.m
  3. //
  4. // Created by Tom Longo on 16/08/12.
  5. // - Twitter: @tomlongo
  6. // - GitHub: github.com/tomlongo
  7. //
  8. #import "PhotoStackViewController.h"
  9. @interface PhotoStackViewController ()
  10. @property (nonatomic, strong) NSArray *photos;
  11. -(void)setup;
  12. @end
  13. @implementation PhotoStackViewController
  14. @synthesize photoStack = _photoStack,
  15. pageControl = _pageControl;
  16. #pragma mark -
  17. #pragma mark Getters
  18. -(NSArray *)photos {
  19. if(!_photos) {
  20. _photos = [NSArray arrayWithObjects:
  21. [UIImage imageNamed:@"photo1.jpg"],
  22. [UIImage imageNamed:@"photo2.jpg"],
  23. [UIImage imageNamed:@"photo3.jpg"],
  24. [UIImage imageNamed:@"photo4.jpg"],
  25. [UIImage imageNamed:@"photo5.jpg"],
  26. nil];
  27. }
  28. return _photos;
  29. }
  30. -(PhotoStackView *)photoStack {
  31. if(!_photoStack) {
  32. _photoStack = [[PhotoStackView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)];
  33. _photoStack.center = CGPointMake(self.view.center.x, 170);
  34. _photoStack.dataSource = self;
  35. _photoStack.delegate = self;
  36. }
  37. return _photoStack;
  38. }
  39. #pragma mark -
  40. #pragma mark Deck DataSource Protocol Methods
  41. -(NSUInteger)numberOfPhotosInPhotoStackView:(PhotoStackView *)photoStack {
  42. return [self.photos count];
  43. }
  44. -(UIImage *)photoStackView:(PhotoStackView *)photoStack photoForIndex:(NSUInteger)index {
  45. return [self.photos objectAtIndex:index];
  46. }
  47. #pragma mark -
  48. #pragma mark Deck Delegate Protocol Methods
  49. -(void)photoStackView:(PhotoStackView *)photoStackView willStartMovingPhotoAtIndex:(NSUInteger)index {
  50. // User started moving a photo
  51. }
  52. -(void)photoStackView:(PhotoStackView *)photoStackView willFlickAwayPhotoFromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex {
  53. // User flicked the photo away, revealing the next one in the stack
  54. }
  55. -(void)photoStackView:(PhotoStackView *)photoStackView didRevealPhotoAtIndex:(NSUInteger)index {
  56. self.pageControl.currentPage = index;
  57. }
  58. -(void)photoStackView:(PhotoStackView *)photoStackView didSelectPhotoAtIndex:(NSUInteger)index {
  59. NSLog(@"selected %lu", (unsigned long)index);
  60. }
  61. #pragma mark -
  62. #pragma mark Actions
  63. - (IBAction)tappedInsertAnotherPhoto:(id)sender {
  64. NSMutableArray *photosMutable = [self.photos mutableCopy];
  65. [photosMutable addObject:[UIImage imageNamed:@"photo6.jpg"]];
  66. self.photos = photosMutable;
  67. [self.photoStack reloadData];
  68. self.pageControl.numberOfPages = [self.photos count];
  69. }
  70. #pragma mark -
  71. #pragma mark Setup
  72. -(void)setup {
  73. [self.view addSubview:self.photoStack];
  74. self.pageControl.numberOfPages = [self.photos count];
  75. }
  76. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
  77. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  78. if (self) {
  79. // Custom initialization
  80. }
  81. return self;
  82. }
  83. - (void)viewDidLoad {
  84. [super viewDidLoad];
  85. [self setup];
  86. }
  87. - (void)viewDidUnload {
  88. [self setPageControl:nil];
  89. [super viewDidUnload];
  90. }
  91. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  92. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  93. }
  94. @end