Как реализовать слайд-шоу фотографий в iphone? - PullRequest
0 голосов
/ 22 апреля 2011

Здравствуйте, я реализовал слайд-шоу фотографий с прокруткой и просмотром изображений, используя пример прокрутки Apple

- (void)viewDidLoad {

    kNumImages=[parray count];
    self.view.backgroundColor=[UIColor viewFlipsideBackgroundColor];
    [scrollView1 setBackgroundColor:[UIColor blackColor]];
    [scrollView1 setCanCancelContentTouches:NO];
    scrollView1.indicatorStyle=UIScrollViewIndicatorStyleWhite;
    scrollView1.clipsToBounds=YES;
    scrollView1.scrollEnabled=YES;   
    scrollView1.pagingEnabled=YES;
    scrollView1.minimumZoomScale=0.5;
    scrollView1.delegate=self;
    scrollView1.maximumZoomScale=6.0;
    NSUInteger i;
    for(i=0;i<kNumImages;i++)
    {

        NSURL *url=[NSURL URLWithString:[parray objectAtIndex:i]];
        NSLog(@"url object at index %i is %@",i,url);
        //NSString *imageName=[NSString stringWithFormat:@"image%d.jpg",i ];
        UIImage *image=[UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
        imageView=[[UIImageView alloc] initWithImage:image];
        CGRect rect=imageView.frame;
        rect.size.height=kScrollObjHeight;
        rect.size.width=kScrollObjWidth;
        imageView.frame=rect;
        imageView.tag=i+1;
        [scrollView1 addSubview:imageView];
        [imageView release];
    }

    [self layoutScrollImages];
    [super viewDidLoad];
}

-(void)layoutScrollImages
{
    kNumImages=[parray count];
    view=nil;
    NSArray *subviews=[scrollView1 subviews];
    CGFloat curXLoc=0;
    for(view in subviews)
    {
        if([view isKindOfClass:[UIImageView class]] && view.tag>0)
        {
            CGRect frame=view.frame;
            frame.origin=CGPointMake(curXLoc, 0);
            view.frame=frame;
            curXLoc+=(kScrollObjWidth);
        }}
    [scrollView1 setContentSize:CGSizeMake((kNumImages *kScrollObjWidth),[scrollView1 bounds].size.height)];

}

это работает нормально. Но последовательность изображений здесь начинается с первого изображения из массива изображений, а не с того, что я хочу, чтобы любое изображение говорилоизображение 3 должно появиться первым в поле зрения, когда страница загружена, и когда я прокручиваю влево, оно должно показывать изображение № 2, а когда я прокручиваю вправо, оно должно показывать изображение 4. Как я могу это сделать?ОБНОВЛЕНИЕ: я решил проблему, используя следующий код:

CGPoint lastFrame = CGPointMake(( 2* kScrollObjWidth), 0.0f);
[scrollView1 setContentOffset:lastFrame];

Ответы [ 2 ]

3 голосов
/ 25 апреля 2011

Я решил проблему, используя следующий код:

CGPoint lastFrame = CGPointMake(( 2* kScrollObjWidth), 0.0f); [scrollView1 setContentOffset:lastFrame];
0 голосов
/ 22 апреля 2011

Вы должны взглянуть на PageControl , который показывает, как пейджинг работает с UIScrollView, и подключить его к UIPageControl. Вы можете легко адаптировать этот код и поместить ваш массив изображений в нужном вам порядке. Эффективно использует память: одновременно используются только три UIImageView.

...