PhotoStackViewController.m 3.5 KB

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