20

ズーム可能な UIScrollView を作成し、それに 100 個のサブビューを追加しました (並べて表示)。ビューは完全に左右にスクロールします。ただし、ズームを許可したいと思います。

そのためには、デリゲートが実装する必要があることを読みました。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return ???;
}

ズームするサブビューが 1 つしかない例を見たことがあるので、そのメソッドでそのサブビューを返します。しかし、私の場合はもっとたくさんあります。ズームを行う適切な方法は何ですか?

別の UIView を作成し、それに 100 個のサブビューを追加してみました。そして、上記の方法でその1つのビューを返しますが、機能しません(ズームしますが、停止するとインタラクティブではなくなります)。

4

3 に答える 3

44

その通り、

これは、AppleがScrollViewプログラミングガイドでも言及していることです。

ビューを作成し、このビューにすべてのサブビューを追加し、新しく作成したビューを単一のサブビューとしてスクロールビューに追加するだけです...

次に、viewForZoomingInScrollViewデリゲートメソッドで、インデックス0のオブジェクトを返します。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
    return [self.scrollView.subviews objectAtIndex:0];
}
于 2010-04-08T21:36:15.510 に答える
2

以下を使用してすべてを追加したビューを作成しました。

UIView *zoomableView = [[UIView alloc] init];

フレームを設定せずに。

すべてのサブビューを追加した後、タイル化されたすべてのサブビューを収容するのに十分な大きさにフレームを設定すると、問題は解決しました。

于 2009-12-03T00:04:49.070 に答える
0

サブビューとしてスクロール ビューに追加するビューを返す必要があります。

例:スクロールビューに画像ビューを追加する場合は、次のように記述します

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
return imageView object;
}
于 2012-12-04T14:23:11.000 に答える