我已经开始尝试了解苹果实现iPhone的photoviewer应用程序的方式,之后观看了WWDC 2009和2010年关于scrollViews和分页照片的视频,我正在非常缓慢地采取每一步,以便在我之前很好地理解这些过程将它全部实现到我的应用程序中。
目前我遇到了几个问题:
首先我设置了一个分页滚动视图,在照片之间左右滑动,两者之间有一些空间,就像视频一样,但是当我在UIImageView中添加图像时,图像太大了对于屏幕,我尝试添加UIViewContentModeScaleAspectFit;没有效果。
当我通过for循环查看包含图像的数组的每个元素时,UIViews重叠并在另一个上面显示一张照片,我想知道如何将它们分成下一部分分页滚动视图。
- (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的编程相当新,并且我正在慢慢地完全理解,最终这个程序将通过捏合和点击缩放模仿本机应用程序。
答案 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]
或类似内容将图像缩放到正确的大小。