1

10枚の画像でスクロール可能なギャラリーを構築しています。ある画像で止まったとき、現在の画像を左右の他の画像よりも少し高く見せたいと思っています。ビューに焦点を合わせてフレームを調整するにはどうすればよいですか? ドラッグが終了すると、関数 scrollViewDidEndDecelerating が呼び出されます。そのイメージビューのフレームへの参照を取得するにはどうすればよいですか?

4

3 に答える 3

3

UIImageViewのsへの参照を保持しているとしましょう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 に答える