pagingScrollView幻灯片

时间:2010-08-12 18:03:50

标签: iphone objective-c

我已经开始尝试了解苹果实现iPhone的photoviewer应用程序的方式,之后观看了WWDC 2009和2010年关于scrollViews和分页照片的视频,我正在非常缓慢地采取每一步,以便在我之前很好地理解这些过程将它全部实现到我的应用程序中。

目前我遇到了几个问题:

  1. 首先我设置了一个分页滚动视图,在照片之间左右滑动,两者之间有一些空间,就像视频一样,但是当我在UIImageView中添加图像时,图像太大了对于屏幕,我尝试添加UIViewContentModeScaleAspectFit;没有效果。

  2. 当我通过for循环查看包含图像的数组的每个元素时,UIViews重叠并在另一个上面显示一张照片,我想知道如何将它们分成下一部分分页滚动视图。

  3. 
    - (void)loadView{
        UIImage *img0 = [UIImage imageNamed:@"29.png"];
        UIImage *img1 = [UIImage imageNamed:@"33.png"];

    NSMutableArray *imgArray = [[NSMutableArray alloc] initWithObjects:img0, img2, nil]; CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds]; pagingScrollViewFrame.origin.x -= 10; pagingScrollViewFrame.size.width += 20; pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame]; pagingScrollView.pagingEnabled = YES; pagingScrollView.backgroundColor = [UIColor blackColor]; pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width * [imgArray count], pagingScrollViewFrame.size.height); self.view = pagingScrollView; for (int i=0; i < [imgArray count]; i++) { UIImageView *page = [[UIImageView alloc] initWithImage: [imgArray objectAtIndex:i]]; page.contentMode = UIViewContentModeScaleAspectFit; [pagingScrollView addSubview:page]; }}
    NSMutableArray *imgArray = [[NSMutableArray alloc] initWithObjects:img0, img2, nil]; CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds]; pagingScrollViewFrame.origin.x -= 10; pagingScrollViewFrame.size.width += 20; pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame]; pagingScrollView.pagingEnabled = YES; pagingScrollView.backgroundColor = [UIColor blackColor]; pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width * [imgArray count], pagingScrollViewFrame.size.height); self.view = pagingScrollView; for (int i=0; i < [imgArray count]; i++) { UIImageView *page = [[UIImageView alloc] initWithImage: [imgArray objectAtIndex:i]]; page.contentMode = UIViewContentModeScaleAspectFit; [pagingScrollView addSubview:page]; }}

    正如我所提到的,我对iPhone的编程相当新,并且我正在慢慢地完全理解,最终这个程序将通过捏合和点击缩放模仿本机应用程序。

2 个答案:

答案 0 :(得分:3)

如果您正在使用UIImageViews,则应确保视图的clipsToBounds字段设置为yes。尝试添加:

UIImageView *page = [[UIImageView alloc] 
                           initWithImage:[imgArray objectAtIndex:i]];
[page setContentMode:UIViewContentModeScaleAspectFit];
[page setClipsToBounds:YES];
[pagingScrollView addSubview:page];

然后,确保在滚动视图中将图像的帧设置为正确的偏移。帧的origin.x需要是帧的宽度乘以图像索引。所以你需要这样的东西:

[page setFrame:CGRectMake(i*pagingScrollViewFrame.size.width, y, width, height)];

其中 i for 循环的索引。

虽然在您引用的WWDC会话的示例代码中,但这是在名为 -configurePage 的方法中完成的。你下载了示例代码吗?

答案 1 :(得分:1)

-[UIImageView initWithImage:]将帧设置为图像的大小。您需要使用page.frame = [[UIScreen mainScreen] bounds]或类似内容将图像缩放到正确的大小。