UIScrollview使当前图像更大

时间:2012-09-30 04:27:10

标签: iphone objective-c ios

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

3 个答案:

答案 0 :(得分:3)

假设您在UIImageView中引用self.imageViews s,您可以尝试这样的事情。

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

- (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];
}