2011-04-22 42 views
0

你好我一直在使用苹果的滚动例如实现照片幻灯片与滚动型和ImageView的如何在iPhone中实现照片幻灯片放映?

- (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)]; 

} 

这个作品fine.but图像序列从这里第一映像从图像阵列,而不是我想要的任何图片说像3号开始当页面加载时我想先出现在视图中,当我向左滚动时,它应该显示图像2号,当我向右滚动时,它应该显示图像4.我可以怎么做? UPDATE: 我一直在使用下面的代码来解决这个问题:

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

回答

3

我已经解决了使用以下代码问题:

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

你应该看看PageControl,显示分页如何与一个UIScrollView并将其连接到UIPageControl。您可以轻松地调整该代码,并按照需要的顺序放入您的图像阵列。它的内存效率:只有三个UIImageView同时使用。

+0

我已经使用以下代码CGPoint lastFrame = CGPointMake((2 * kScrollObjWidth),0.0F)解决了这个问题; \t [scrollView1 setContentOffset:lastFrame]; – nehal 2011-04-22 12:58:37

+1

非常好。将其张贴为您自己的答案并在24小时内接受。 – 2011-04-22 13:00:20

+0

@NickWeaver PageControl示例正是我正在寻找的。有一个迅速的版本?在obj-c中很难跟踪。 – oyalhi 2015-12-29 17:44:07