iPhone UIScrollView - 如何获取图像标题

时间:2009-06-06 11:51:50

标签: iphone image scroll uiscrollview photo

我正在尝试使用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]; //现在将照片置于滚动视图中的串行布局

1 个答案:

答案 0 :(得分:2)

睡个好觉后这很容易!

CGPoint p = scrollView1.contentOffset;
NSLog(@"x = %f, y = %f", p.x, p.y);

现在只需除以320(如果是水平和全屏图像)并添加1(因为它从0开始)。

希望这有助于其他人!