views:

18

answers:

1

Hi, I have an animation (currently 30 different images repeating) and I wish to add it into a single page in a ScrollView (currently holding 7 pages). Can this be done?

I've added my code below, the behaviour I'm getting is that on my selected page nothing appears, on all the other pages I get the images as normal, but there must be something wrong with my addAnimation method that I'm not seeing. Can someone please look at this and tell me what I'm doing wrong... I fear it's an obvious error, I've been staring at this for some time now.

ViewController.m

- (void)loadView {
    //holds the pages
 pageArray = [[NSMutableArray alloc] init];  
 [self setUpView];
}
- (void)setUpView {
 //INITIALISE PAGING SCROLL VIEW
 CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds];
 pagingScrollViewFrame.origin.x = 0;
 pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame];
 pagingScrollView.contentMode =  UIViewContentModeScaleAspectFit;

 //CONFIGURE PAGING SCROLL VIEW 
 pagingScrollView.pagingEnabled = YES;
 pagingScrollView.backgroundColor = [UIColor whiteColor];
 pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width*7, pagingScrollViewFrame.size.height);

 //ACTIVATE PAGING SCROLL VIEW
 self.view = pagingScrollView;

 //ADD PAGES TO SCROLL VIEW
 for (int i = 0; i < 7; i++){
  ImageScrollView *page = [[[ImageScrollView alloc] init] autorelease];
  [self configurePage:page forIndex:i];
  [pagingScrollView addSubview:page];
            //adds pages here for reference in other methods
  [pageArray addObject:page];
 }
}
- (void)configurePage:(ImageScrollView *)page forIndex:(NSUInteger)index
{
    page.index = index;
    page.frame = [self frameForPageAtIndex:index];
    //if the image is id number 4 add an animation, if not, add an image as normal
 if (index == 4){
  [self addAnimation:page];
 }else {
  [page displayImage:[self imageAtIndex:index]];
 }

}
- (void)addAnimation:(ImageScrollView *)page{
    //I got this code from a tutorial on animation, I'm trying to add this UIImageView to my ScrollView

    // make a new UIImageView for the new image
    UIImageView* animationView = [[UIImageView alloc] init];
 // load all the frames of our animation
 animationView.animationImages = [NSArray arrayWithObjects: 
          [UIImage imageNamed:@"pin clip0000.jpg"],
          [UIImage imageNamed:@"pin clip0001.jpg"],
          [UIImage imageNamed:@"pin clip0002.jpg"],
          [UIImage imageNamed:@"pin clip0003.jpg"],
          [UIImage imageNamed:@"pin clip0004.jpg"],
          [UIImage imageNamed:@"pin clip0005.jpg"],
          [UIImage imageNamed:@"pin clip0006.jpg"],
          [UIImage imageNamed:@"pin clip0007.jpg"],
          [UIImage imageNamed:@"pin clip0008.jpg"],
          [UIImage imageNamed:@"pin clip0009.jpg"],
          [UIImage imageNamed:@"pin clip0010.jpg"],
          [UIImage imageNamed:@"pin clip0011.jpg"],
          [UIImage imageNamed:@"pin clip0012.jpg"],
          [UIImage imageNamed:@"pin clip0013.jpg"],
          [UIImage imageNamed:@"pin clip0014.jpg"], 
          [UIImage imageNamed:@"pin clip0015.jpg"],
          [UIImage imageNamed:@"pin clip0016.jpg"],
          [UIImage imageNamed:@"pin clip0017.jpg"],
          [UIImage imageNamed:@"pin clip0018.jpg"],
          [UIImage imageNamed:@"pin clip0019.jpg"],
          [UIImage imageNamed:@"pin clip0020.jpg"],
          [UIImage imageNamed:@"pin clip0021.jpg"],
          [UIImage imageNamed:@"pin clip0022.jpg"],
          [UIImage imageNamed:@"pin clip0023.jpg"],
          [UIImage imageNamed:@"pin clip0024.jpg"],
          [UIImage imageNamed:@"pin clip0025.jpg"],
          [UIImage imageNamed:@"pin clip0026.jpg"],
          [UIImage imageNamed:@"pin clip0027.jpg"],
          [UIImage imageNamed:@"pin clip0028.jpg"],
          [UIImage imageNamed:@"pin clip0029.jpg"],
          nil];

 // all frames will execute in 1 second
 animationView.animationDuration = 1;
 // repeat the annimation forever
 animationView.animationRepeatCount = 0;
 // start animating
 [animationView startAnimating];
    [page addSubview:animationView];
 [animationView release];

}
A: 

I hadn't added a frame to the animation. I added this to the addAnimation method:

CGRect animationFrame;

animationFrame = page.frame;
animationFrame.origin.x = 0;

animationView.frame = animationFrame;
Daniel Hanly