1

我正在构建一个包含 10 张图像的可滚动画廊。当我停在一个图像上时,我希望当前图像看起来比两侧的其他图像高一点。如何获得焦点并调整框架?一旦拖动结束,就会调用函数 scrollViewDidEndDecelerating。如何获得对该 imageview 框架的引用?

4

3 回答 3

3

假设你持有对UIImageViews in 的引用self.imageViews,你可以尝试这样的事情。

CGFloat centerX = CGRectGetMidX(self.view.bounds);
for(UIImageView imgView * in self.imageViews)
{
    if(CGRectContainsPoint(imgView, centerX)) // If imgView is close to center
    {
        imgView.transform = CGAffineTransformMakeScale(1.2f, 1.2f);
    }
    else
    {
        imgView.transform = CGAffineTransformIdentity;
    }
}

我假设你是水平滚动,但如果你是垂直滚动,你需要使用它centerY

于 2012-09-30T12:59:20.467 回答
2

查看 iCarousel 而不是重新发明轮子...... https://github.com/nicklockwood/iCarousel

于 2012-09-30T09:47:08.017 回答
1

如果您的图像列表是有限的,并且不会变得太大,我会保留一个 NSArray 对图像的引用。然后,scrollViewDidEndDecelerating您可以使用滚动偏移量来确定滚动停止的位置,并将其与整个视图成比例,您应该能够知道要显示数组中的哪个索引图像。

像这样的东西(语法可能是关闭的)

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //assumes that "arrayOfImages" is the array of images that you are showing
    //contentOffset.y assumes your scroll view is scrolling vertically, switch to x if horizontal
    int indexOfImageToShow = scrollView.contentOffset.y / [arrayOfImages count];
    UIImage *imageToShow = [arrayOfImages objectAtIndex:indexOfImageToShow];
}
于 2012-09-30T05:05:54.190 回答