你好,我已经实现了照片幻灯片与scrollview和imageview使用苹果的滚动的例子
- (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要在页面加载时首先出现在视图中当我向左滚动时,它应该显示图像1。当我向右滚动时,它应该显示图像4。我怎么能做到呢?更新:我已经用下面的代码解决了这个问题:
CGPoint lastFrame = CGPointMake(( 2* kScrollObjWidth), 0.0f);
[scrollView1 setContentOffset:lastFrame];
我已经用下面的代码解决了这个问题:
CGPoint lastFrame = CGPointMake(( 2* kScrollObjWidth), 0.0f); [scrollView1 setContentOffset:lastFrame];
你应该看一下PageControl,它显示了分页是如何与UIScrollView一起工作的,并将它连接到UIPageControl。您可以轻松地调整该代码,并按需要的顺序放入图像数组。它的内存效率:只有三个uiimageview在同一时间被使用。