我正在尝试使用Apple的文档和他们的示例代码http://developer.apple.com/iphone/library/samplecode/Scrolling/index.html来学习UIScrollview但是很简单的事情正在逃避我。
如何判断屏幕上当前的图像是什么,这样如果我在水平滚动视图中选择了一个图像,我将如何获取图像的文件名,甚至是数组的指针,然后用图像做更多事情。
我认为通过页面控制启用我可以找到页面#并将其映射到图像。我考虑过计算减速度以计算页数,但是没有足够的动作会增加它并给出错误的数字。
我能想到的最后一件事是获取contentOffSet并除以图像大小,这将给出1,2,3,我可以指向数组(今晚太累了,不能尝试...以为我可能会问我之前浪费了更多的时间;-))。
还有其他想法吗?我认为他们将成为他们在相册应用中使用的方法。
感谢您的帮助!也许我只是不理解他们的代码。
保
PS:这是代码:
- (void)layoutScrollImages
{ UIImageView * view = nil; NSArray * subviews = [scrollView1 subviews];
// reposition all image subviews in a horizontal serial fashion
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);
}
}
// set the content size so it can be scrollable
[scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)];
}
(无效)viewDidLoad中 { self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];
// 1.为多个图像设置scrollview并将其添加到视图控制器 // //注意:以下内容可以在Interface Builder中完成,但为了清楚起见,我们在代码中显示了这一点 [scrollView1 setBackgroundColor:[UIColor blackColor]]; [scrollView1 setCanCancelContentTouches:NO]; scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite; scrollView1.clipsToBounds = YES; //默认为NO,我们想在scrollview中限制绘图 scrollView1.scrollEnabled = YES;
// pagingEnabled属性默认为NO,如果设置,则滚动条将停止或捕捉每张照片 //如果你想要自由流动的滚动,不要设置这个属性。 scrollView1.pagingEnabled = YES;
//从我们的包中加载所有图像并将它们添加到滚动视图中 // NSUInteger i; for(i = 1; i< = kNumImages; i ++) { NSString * imageName = [NSString stringWithFormat:@“Card%d.png”,i]; UIImage * image = [UIImage imageNamed:imageName]; UIImageView * imageView = [[UIImageView alloc] initWithImage:image];
// setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
CGRect rect = imageView.frame;
rect.size.height = kScrollObjHeight;
rect.size.width = kScrollObjWidth;
imageView.frame = rect;
imageView.tag = i; // tag our images for later use when we place them in serial fashion
[scrollView1 addSubview:imageView];
[imageView release];
}
[self layoutScrollImages]; //现在将照片置于滚动视图中的串行布局
答案 0 :(得分:2)
睡个好觉后这很容易!
CGPoint p = scrollView1.contentOffset;
NSLog(@"x = %f, y = %f", p.x, p.y);
现在只需除以320(如果是水平和全屏图像)并添加1(因为它从0开始)。
希望这有助于其他人!
保