我正在构建一个包含 10 张图像的可滚动画廊。当我停在一个图像上时,我希望当前图像看起来比两侧的其他图像高一点。如何获得焦点并调整框架?一旦拖动结束,就会调用函数 scrollViewDidEndDecelerating。如何获得对该 imageview 框架的引用?
问问题
538 次
3 回答
3
假设你持有对UIImageView
s 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 回答