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