UIScrollview使当前图像更大

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

假设你在self.imageViews引用了UIImageView ,你可以试试这样的东西。

 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

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

如果你的图像列表是有限的,并且不会太大,我会保留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]; }